2013/01/30(Wed) 10:00:27 編集(投稿者)
■No64975 (福富雄介 さん) に返信
button1brush.GradientStops.Clear();
button1brush.GradientStops.Add(new GradientStop(Colors.Red, 0));
button1brush.GradientStops.Add(new GradientStop(Colors.Black, 1));
という組み合わせが頻繁に出てきます。
この中で各場所で異なる部分を例えばA, B, Cとすると
A.GradientStops.Clear();
A.GradientStops.Add(new GradientStop(B, 0))
A.GradientStops.Add(new GradientStop(C, 1))
となります。
これを関数化すると
private void SetGradient(LinearGradientBrush A, Color B, Color C)
{
A.GradientStops.Clear();
A.GradientStops.Add(new GradientStop(B, 0))
A.GradientStops.Add(new GradientStop(C, 1))
}
となります。
元のソースの該当部分をこの関数呼び出しに置き換えると
以下のようになります。これで少しはすっきりします。上記関数の
定義は適当に記述する必要があります。
namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
//ボタンスタータス初期化
public int intButton1 = 1;
public int intButton2 = 1;
public LinearGradientBrush button1brush;
public LinearGradientBrush button2brush;
public MainWindow()
{
InitializeComponent();
//グラデーションインスタンス生成
button1brush = new LinearGradientBrush();
button2brush = new LinearGradientBrush();
//初期のグラデーション配色設定
SetGradient(button1brush, Colors.Red, Colors.Black);
SetGradient(button2brush, Colors.Red, Colors.Black);
〜
}
private void button1_Click(object sender, RoutedEventArgs e)
{
switch (intButton1)
{
case 1:
//グラデーション設定
SetGradient(button1brush, Colors.Aqua, Colors.White);
intButton1 = 2;
break;
case 2:
//グラデーション設定
SetGradient(button1brush, Colors.Black, Colors.CadetBlue);
intButton1 = 3;
break;
case 3:
//グラデーション設定
SetGradient(button1brush, Colors.Red, Colors.Black);
intButton1 = 1;
break;
default:
break;
}
}
private void button2_Click_1(object sender, RoutedEventArgs e)
{
switch (intButton2)
{
case 1:
//グラデーション設定
SetGradient(button2brush, Colors.Aqua, Colors.White);
intButton2 = 2;
break;
case 2:
//グラデーション設定
SetGradient(button2brush, Colors.Black, Colors.CadetBlue);
intButton2 = 3;
break;
case 3:
//グラデーション設定
SetGradient(button2brush, Colors.Red, Colors.Black);
intButton2 = 1;
break;
default:
break;
}
}