fc2ブログ

FormにColorBlendで三色旗を描画する(2)

Methodを使って三色旗を描画してみます。


1)Windowsアプリケーションから起動してForm1を用意します。

2)using System.Drawing.Drawing2D; を追加する。

3)下記のMethodを入力します。

private void flag(PaintEventArgs e,Color c1,Color c2,Color c3)
{
Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Black, Color.Gold, LinearGradientMode.Vertical);
ColorBlend cb = new ColorBlend(6);
cb.Colors[0] = c1;
cb.Colors[1] = c1;
cb.Colors[2] = c2;
cb.Colors[3] = c2;
cb.Colors[4] = c3;
cb.Colors[5] = c3;
cb.Positions[0] = 0.0f;
cb.Positions[1] = 1 / 3f;
cb.Positions[2] = 1 / 3f;
cb.Positions[3] = 2 / 3f;
cb.Positions[4] = 2 / 3f;
cb.Positions[5] = 1.0f;
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();
}

4)プロパティのイベントボタンをクリック。

5)プロパティの右側のScrollBarを下に動かして、Paintをダブルクリック。

6)下記を入力します。

flag(e, Color.Red, Color.White, Color.Blue);

ColorBlend_22.jpg

7)デバッグ開始(F5)します。

ColorBlend_23.jpg

ロシアの国旗
flag(e, Color.White, Color.Blue, Color.Red);

ColorBlend_24.jpg

イエメンの国旗
flag(e, Color.Red, Color.White, Color.Black);

ColorBlend_25.jpg

オーストリアの国旗
flag(e, Color.Red, Color.White, Color.Red);

ColorBlend_26.jpg




MethodのVerticalをHorizontalに入れ換えます。



フランスの国旗
flag(e, Color.Blue, Color.White, Color.Red);

ColorBlend_27.jpg

アイルランドの国旗
flag(e, Color.Green, Color.White, Color.Orange);

ColorBlend_28.jpg

ギニアの国旗
flag(e, Color.Red, Color.Yellow, Color.Green);

ColorBlend_29.jpg




FormにColorBlendで三色旗を描画する(1)

ColorBlendを使ってグラデーションではなく、はっきりと色分け描画してみます。

ドイツの国旗を描画してみます。

1)Windowsアプリケーションから起動してForm1を用意します。

2)using System.Drawing.Drawing2D; を追加する。

3)プロパティのイベントボタンをクリック。

4)プロパティの右側のScrollBarを下に動かして、Paintをダブルクリック。

5)下記を入力します。

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Black, Color.Gold, LinearGradientMode.Vertical);
ColorBlend cb = new ColorBlend(6);
cb.Colors[0] = Color.Black;
cb.Colors[1] = Color.Black;
cb.Colors[2] = Color.Red;
cb.Colors[3] = Color.Red;
cb.Colors[4] = Color.Gold;
cb.Colors[5] = Color.Gold;
cb.Positions[0] = 0.0f;
cb.Positions[1] = 1/3f;
cb.Positions[2] = 1/3f;
cb.Positions[3] = 2/3f;
cb.Positions[4] = 2/3f;
cb.Positions[5] = 1.0f;
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_19.jpg

6)デバッグ開始(F5)します。

ColorBlend_20.jpg

ドイツの国旗の黒・赤・金は、義勇軍の軍服、黒地に赤の襟、金のボタンを表しているそうです。



Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Green, Color.Red, LinearGradientMode.Horizontal);
ColorBlend cb = new ColorBlend(6);
cb.Colors[0] = Color.Green;
cb.Colors[1] = Color.Green;
cb.Colors[2] = Color.White;
cb.Colors[3] = Color.White;
cb.Colors[4] = Color.Red;
cb.Colors[5] = Color.Red;
cb.Positions[0] = 0.0f;
cb.Positions[1] = 1/3f;
cb.Positions[2] = 1/3f;
cb.Positions[3] = 2/3f;
cb.Positions[4] = 2/3f;
cb.Positions[5] = 1.0f;
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_21.jpg

イタリアの国旗の緑・白・赤は、「国土」「雪・正義・平和」「愛国者の血・熱血」を表しているそうです。



複数の色による線形グラデーション(ColorBlend)を描画する(3)

LinearGradientBrush コンストラクタ (Point, Point, Color, Color)
と組み合わせて、線形グラデーションを複数本描画してみます。


ColorBlend メンバー
多色グラデーションの色のブレンドの補間に使用される、色と位置の配列を定義します。 このクラスは継承できません。

LinearGradientBrush.InterpolationColors プロパティ
複数の色による線形グラデーションを定義する ColorBlend を取得または設定します。
名前空間: System.Drawing.Drawing2D


1)Windowsアプリケーションから起動してForm1を用意します。

2)using System.Drawing.Drawing2D; を追加する。

3)プロパティのイベントボタンをクリック。

4)プロパティの右側のScrollBarを下に動かして、Paintをダブルクリック。

5)下記を入力します。

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0), new Point(90, 0), Color.Red, Color.Violet);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Red, Color.Orange,
Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet };
cb.Positions = new float[] { 0f, 1 / 7f, 2 / 7f, 3 / 7f, 4 / 7f, 5 / 7f, 6 / 7f, 1f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_12.jpg

6)デバッグ開始(F5)します。

ColorBlend_13.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0), new Point(30, 0), Color.Red, Color.Violet);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Red, Color.Orange,
Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet };
cb.Positions = new float[] { 0f, 1 / 7f, 2 / 7f, 3 / 7f, 4 / 7f, 5 / 7f, 6 / 7f, 1f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_14.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0), new Point(80, 10), Color.Red, Color.Violet);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Red, Color.Orange,
Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet };
cb.Positions = new float[] { 0f, 1 / 7f, 2 / 7f, 3 / 7f, 4 / 7f, 5 / 7f, 6 / 7f, 1f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_15.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0), new Point(30, 10), Color.Red, Color.Violet);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Red, Color.Orange,
Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet };
cb.Positions = new float[] { 0f, 1 / 7f, 2 / 7f, 3 / 7f, 4 / 7f, 5 / 7f, 6 / 7f, 1f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_16.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0), new Point(3, 75), Color.Red, Color.Violet);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Red, Color.Orange,
Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet };
cb.Positions = new float[] { 0f, 1 / 7f, 2 / 7f, 3 / 7f, 4 / 7f, 5 / 7f, 6 / 7f, 1f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_17.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
new Point(0, 0), new Point(1, 25), Color.Red, Color.Violet);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Red, Color.Orange,
Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet };
cb.Positions = new float[] { 0f, 1 / 7f, 2 / 7f, 3 / 7f, 4 / 7f, 5 / 7f, 6 / 7f, 1f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_18.jpg




複数の色による線形グラデーション(ColorBlend)を描画する(2)

もう少し色を増やしてみます。

ColorBlend メンバー
多色グラデーションの色のブレンドの補間に使用される、色と位置の配列を定義します。 このクラスは継承できません。

LinearGradientBrush.InterpolationColors プロパティ
複数の色による線形グラデーションを定義する ColorBlend を取得または設定します。
名前空間: System.Drawing.Drawing2D


1)Windowsアプリケーションから起動してForm1を用意します。

2)using System.Drawing.Drawing2D; を追加する。

3)プロパティのイベントボタンをクリック。

4)プロパティの右側のScrollBarを下に動かして、Paintをダブルクリック。

5)下記を入力します。

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Red, Color.Blue, LinearGradientMode.Vertical);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Yellow, Color.Green,
Color.Cyan, Color.Blue, Color.Magenta};
cb.Positions = new float[] { 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_07.jpg

6)デバッグ開始(F5)します。

ColorBlend_08.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Red, Color.Blue, LinearGradientMode.Horizontal);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Yellow, Color.Green,
Color.Cyan, Color.Blue, Color.Magenta};
cb.Positions = new float[] { 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_09.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Red, Color.Blue, LinearGradientMode.ForwardDiagonal);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Yellow, Color.Green,
Color.Cyan, Color.Blue, Color.Magenta};
cb.Positions = new float[] { 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_10.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Red, Color.Blue, LinearGradientMode.BackwardDiagonal);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Yellow, Color.Green,
Color.Cyan, Color.Blue, Color.Magenta};
cb.Positions = new float[] { 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_11.jpg


複数の色による線形グラデーション(ColorBlend)を描画する

ColorBlend メンバー
多色グラデーションの色のブレンドの補間に使用される、色と位置の配列を定義します。 このクラスは継承できません。

LinearGradientBrush.InterpolationColors プロパティ
複数の色による線形グラデーションを定義する ColorBlend を取得または設定します。
名前空間: System.Drawing.Drawing2D

1)Windowsアプリケーションから起動してForm1を用意します。

2)using System.Drawing.Drawing2D; を追加する。

3)プロパティのイベントボタンをクリック。

4)プロパティの右側のScrollBarを下に動かして、Paintをダブルクリック。

5)下記を入力します。

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(this.ClientRectangle,
Color.Red, Color.Blue, LinearGradientMode.Vertical);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Green, Color.Blue };
cb.Positions = new float[] { 0.0f, 0.5f, 1.0f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_06.jpg

6)デバッグ開始(F5)します。

ColorBlend_02.jpg


Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
this.ClientRectangle, Color.Red, Color.Blue, LinearGradientMode.Horizontal);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Green, Color.Blue };
cb.Positions = new float[] { 0.0f, 0.5f, 1.0f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_03.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
this.ClientRectangle, Color.Red, Color.Blue, LinearGradientMode.ForwardDiagonal);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Green, Color.Blue };
cb.Positions = new float[] { 0.0f, 0.5f, 1.0f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_04.jpg

Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(
this.ClientRectangle, Color.Red, Color.Blue, LinearGradientMode.BackwardDiagonal);
ColorBlend cb = new ColorBlend();
cb.Colors = new Color[] { Color.Red, Color.Green, Color.Blue };
cb.Positions = new float[] { 0.0f, 0.5f, 1.0f };
lgb.InterpolationColors = cb;
g.FillRectangle(lgb, this.ClientRectangle);
lgb.Dispose();
g.Dispose();

ColorBlend_05.jpg






プロフィール

迫(Seko) 廣太郎(koutarou)迫 製作所(Seko Seisakusyo)

Author:迫(Seko) 廣太郎(koutarou)迫 製作所(Seko Seisakusyo)
C#ビギナーブログへようこそ!

最新記事
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
リンク