トップ回答者
Wordの文字スタイルの背景色の設定方法について

質問
-
現在、Wordのアドインを作成しています。
いくつかのスタイルを作成する予定ですが、この中の背景色の設定方法で詰まってしまいました。
下記のように指定しようとしましたが、2行目の代入の際に型が異なるようで、明示的な変換が必要だとVisual Studioに指摘されています。
Word.Style addedStyle = doc.Styles.Add("name", Word.WdStyleType.wdStyleTypeCharacter); addedStyle.Font.Shading.BackgroundPatternColor = Color.FromArgb(0, 10, 50);
BackgroudPatternColorには24bit colorを指定しなければならないようですが、Color.FormArgb(0, 10, 50)は8bit×(3色+アルファ値)で32bit colorのようです。
この2者間の明示的な変換方法を教えていただけませんでしょうか。
よろしくお願い致します。
回答
すべての返信
-
こんな方法があるようですが、試したでしょうか?
c# - Convert System.Color To Microsoft Word WdColor - Stack Overflow
<http://stackoverflow.com/questions/13075335/convert-system-color-to-microsoft-word-wdcolor>
-
補足で、
Shading.BackgroundPatternColor プロパティに
使用できる値は、有効な WdColor 列挙型の定数のいずれか、または Visual Basic の RGB 関数で取得する値です。
との記述があります。RGB関数の実体はInformation.RGB メソッドでそのソースコードを見ますとどのような演算を行えばいいかを確認できます。
// Color c; c.B << 24 | c.G << 16 | c.R
かな?
-
>> こぐま様
ありがとうございます。
お礼が遅くなってしまい、申し訳ありません。
VisualBasic関数が使えるんですね。RGB関数は試していませんでした。
教えていただいたページが大変参考になりました。
念のため書いたコードを貼ります。
Word.Style addedStyle = doc.Styles.Add("name", Word.WdStyleType.wdStyleTypeCharacter); int rgbValue = Information.RGB(0, 10, 50); addedStyle.Font.Shading.BackgroundPatternColor = (Word.WdColor)rgbValue;
ありがとうございました。
-
>> 佐祐理様
ありがとうございます。
お礼が遅くなってしまい、申し訳ありません。
Shading.BackgroundPatternColorプロパティの記述の「Visual BasicのRGB関数~」という部分が理解できていませんでした。
ソースコードからも考えることができるんですね。大変勉強になりました!
8進数での変換でしたので、シフトを利用すると下記のようになりました。
念のため、書いたものを貼っておきます。
Color color = Color.FromArgb(0, 10, 50); Word.Style addedStyle = doc.Styles.Add("name", Word.WdStyleType.wdStyleTypeCharacter); int rgbValue = getRGBValue(color); addedStyle.Font.Shading.BackgroundPatternColor = (Word.WdColor)rgbValue; private int getRGBValue(Color c) { return (int)(c.R | c.G << 8 | c.B << 16); }
ありがとうございました。
- 編集済み kkkokkk 2015年1月5日 9:38