libro
www.tuyano.com
初心者のためのWindows Phoneプログラミング入門

さまざまなプロパティの操作 (5/5)

作成:2011-09-12 08:07
更新:2011-09-12 08:07

■色の設定について

続いて、色に関するプロパティに進みましょう。コントロールには、色に関するプロパティとして以下の2つのものが用意されています。

Foreground――前景色。テキストの色など。
Background――背景色。

ただし! これらは常にすべてのコントロールに用意されているわけではありません。特にBackgroundは、利用できないコントロールがけっこうあります。例えばテキストを表示するTextBlockなどもその1つで、こうしたコントロールは、それを配置したコントロールの上に文字だけを表示する(つまり下にあるコントロールの色がそのまま背景となる)関係上、コントロール固有の背景色というものを設定できません。

では、これらの色に関するプロパティに設定するのはどのような値か。これは「Brush」(ブラシ)というものなのです。Brushは、「塗りつぶしに関する設定などを管理するためのクラス」です。このBrushおよびBrushのサブクラスのインスタンスを用意し、Foreground/Backgroundに設定するのです。

Brushというのは、さまざまな「塗りつぶし」に関するクラスのスーパークラスとなるものです。Windows Phoneでは、コントロールは、ただ単純に1つの色で表示される、というものではありません。例えばグラディエーションをしたり、特定のパターンを使って塗りつぶしたりというように、さまざまな形で表示できるのです。

Brushには、サブクラスとして「指定の色で塗りつぶすBrush」「グラディエーションして塗りつぶすBrush」というように、さまざまな塗り方のクラスが用意されています。これらの中から使用する塗りつぶし方法にあったBrushのインスタンスを作成し、それをプロパティに設定するのです。

ここでは、もっとも簡単な「1つの色で塗りつぶす」というのをやってみましょう。これは「SolidColorBrush」というものを使います。これは以下のようにインスタンスを作成します。

※SolidColorBrush作成
変数 = new SolidColorBrush();
変数 = new SolidColorBrush(【Color】);
引数に「Color」という色を示すクラスのインスタンスを渡すことで、その色で塗りつぶすSolidColorBrushができあがります。あるいは、引数を指定せずに作成後、「Color」プロパティにColorインスタンスを設定してもかまいません。

では、Colorはどのように用意するのか。これにはいくつかの方法があります。1つは、「Colors」クラスにプロパティとして用意されているものを使います。Colorsは、主な色のColorインスタンスをひとまとめにしたもので、以下のようなプロパティが用意されています。
Black Blus Brown Cyan DardGray Gray Green LightGray
Magenta Orange Purple Red Transparent White Yellow
これらのプロパティを使ってSolidColorBrushを作成します。例えば赤く塗りつぶすのであれば、new SolidColorBrush(Colors.Red);とすればいいわけです。

もう1つの方法は、Colorクラスに用意されているメソッドを使い、インスタンスを作成するというものです。これには以下のメソッドが用いられます。
変数 = ColorFromArgb( byte値, byte値, byte値, byte値 );
引数には、アルファチャンネルの各輝度をbyte値で指定します。

――では、実際の利用例を下にあげておきましょう。TextBoxに、0~255の数値を入力してボタンを押すと、TextBlockのテキストの色が変わります。

ここではSolidColorBrushを作成し、Color.FromArgbColorインスタンスを作成してからSolidColorBrushColorプロパティに設定をしています。そしてこのSolidColorBrushを、textBlock1.Foregroundに設定して色を変更しています。

Brushについては、いずれグラフィック関係のところで改めて取り上げることになるでしょう。ここでは「SolidColorBrusyColorを使うことでコントロールの色を設定できる」ということだけ覚えておきましょう。
(by. SYODA-Tuyano.)

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

private void button1Click(object sender, RoutedEventArgs e)
{
	byte n = Byte.Parse(textBox1.Text);
	SolidColorBrush brush = new SolidColorBrush();
	brush.Color = Color.FromArgb(255, n, 0, (byte)(255 - n));
	textBlock1.Foreground = brush;
}

※関連コンテンツ

「初心者のためのWindows Phoneプログラミング入門」に戻る