2012-04-20 9 views
0

私はPresentationMLパーサーに取り組んでいますが、私はフォントの色に関するテーマのサポートを実装しようとしています。私はSDKで働いている、と私は、この怪物を困惑しました:プレゼンテーションテーマから実行/ txbody /段落のフォント色を取得するにはどうすればよいですか?

Slide.SlidePart.SlideLayoutPart.SlideMasterPart.SlideMaster.SlideMasterPart.ThemePart.Theme.ThemeElements.ColorScheme 

をしかし、私はそれが特に指定した色だ受けていない実行のための色を取得するために行くところそれはまだ明確ではありません。これに関する助けがあれば大いに感謝します。

TIA。

更新:xmlを渡り歩いた後、私が上に掲載したモンスターコールがおそらく正しいかもしれません...探している16進コードと一致する「val」属性を持つ要素が生成されます。しかし、カラーマップ(この場合は「Light1」)で特定のスキームをどのように解決するかは明確ではありません。私はその道のりの約75%を占めていると思います。誰かがどのスキームがランに適用されるかを知るロジックを私に教えてもらえれば、私はそれが必要だと思います。

答えて

3

無料の電子書籍Open XML Explainedは、理解を助けるためにいくつかの洞察力を与えるかもしれません。 PresentationMLセクションで、ドキュメントのコンテンツ構造は、それがテーマとマスターレイアウトはデフォルト値を与えるために使用されているかを語る:

ページ86 - 第二段落:

DrawingMLのテーマは、フォントのデフォルト値を作成するために使用することができます、レイアウト、およびその他のブランディング関連のデータを作成し、プレゼンテーションの本体から分離することができます。テーマはすべてのOpen XMLマークアップ言語で再利用可能です。 PresentationMLパッケージ内では、さまざまなテーマが使用されています。デフォルトでは、個々のマスタ、スライド、ノート、およびハンドアウトマスタは、別々のテーマ部分を参照します。プレゼンテーション自体は、プレゼンテーションで使用される既定のテーマも参照します。このデフォルトのテーマは、パッケージ内の同じ部分を参照することによってスライドマスターと共有されました。

したがって、プレゼンテーションSlideMasterのtheme1.xmlには、スライドマスターとプレゼンテーションに使用されるテーマ定義があります。色名Light1、Dark1などは、各テーマのTheme ElementのColor Schemeで必要な12の色にマッピングされます。詳細は、schemaを参照してください。

実行時には、テーマに定義されている番号に対応するLight1が表示されます。作者がマスターレイアウトやテーマを変更した場合、Light1は実行中に変更されませんが、テーマの値が新しい値を取得する場所である可能性があります。 121ページ

は、12色は、Open XMLに記載されているの説明:

をあなたはすべてのテーマのデータを保持しているthemeElementsノードを作成するために必要とされているテーマの要素の中。このレベルでは、テーマ要素内の既存の情報に余分な情報や上書きを適用することもできます。テーマ要素は、子ノードのセットを使用して構築され、各ノードは、フォントや色などの特定のデータ項目を識別する。 clrScheme要素は色のリストを定義します。テーマ色のリストは、 'accent1'や 'visited link'などの項目に限定されています。これらのテーマカラーのそれぞれは、ノード名がテーマカラーを識別する別個のXML要素を使用します。この要素の内部では、前述のDrawingMLを使用した図形の色付けのメカニズムを利用します。マークアップサンプル157には、「ダーク1」と「アクセント1」の2つのテーマカラーが定義されています。マークアップサンプルが完全ではありません。 12のテーマカラーのすべてに値を定義する必要があります。

...この情報がお役に立てば幸いです
関連する問題