都知道光的三原色吧。他們是:紅、綠、藍。所有的顔色都可以通過這三個顔色搭配而成。通過他們的像素值的不斷變化,就可以得到五顔六色了。
滑鼠進入事件(獲得焦點),
窗體加載事件(注冊事件,調用方法),
滑鼠滾動事件(判斷方向,并設定三色的像素值)
下面看看怎麼做到的:
//當滑鼠進入紅色區域時,該區域獲得焦點
private void pbRed_MouseEnter(object sender, EventArgs e)
{
//将控件的類型轉換成我們需要的PictureBox類型
PictureBox pb = (PictureBox)sender;
//讓這個PictureBox控件獲得焦點
pb.Focus();
}
/// <summary>
/// 在窗體加載的時候,注冊事件,當某事件發生的時候調用相應的方法來處理這個事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
this.pbRed.MouseWheel += new MouseEventHandler(pbRed_MouseWheel);
this.pbGreen.MouseWheel += new MouseEventHandler(pbRed_MouseWheel);
this.pbBlue.MouseWheel += new MouseEventHandler(pbRed_MouseWheel);
}
//定義三個字段(全局變量)
int red, green, blue;
/// <summary>
/// 滑鼠滾動的時候,調色闆上的顔色發生變化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void pbRed_MouseWheel(object sender, MouseEventArgs e)
{
PictureBox pb = (PictureBox)sender;
//判斷滑鼠滾動的方向
//若是向前,則相應顔色的像素值增加
if (e.Delta > 0)
{
//判斷滑鼠在哪個顔色區域滾動,若是紅色區域則紅色像素值增加,直到加到255,就不在變化
if (pb.BackColor == Color.Red)
{
if (red < 255)
{
red++;
}
//設定紅色此時的像素值
this.lblRed.Text = red.ToString();
}
if (pb.BackColor == Color.Green)
{
if (green < 255)
{
green++;
}
this.lblGreen.Text = green.ToString();
}
if (pb.BackColor == Color.Blue)
{
if (blue < 255)
{
blue++;
}
this.lblBlue.Text = blue.ToString();
}
//設定調色闆的顔色
this.pbMixColor.BackColor = Color.FromArgb(int.Parse(lblRed.Text), int.Parse(lblGreen.Text), int.Parse(lblBlue.Text));
}
else
{
if (pb.BackColor == Color.Red)
{
if (red > 0)
{
red--;
}
this.lblRed.Text = red.ToString();
}
if (pb.BackColor == Color.Green)
{
if (green > 0)
{
green--;
}
this.lblGreen.Text = green.ToString();
}
if (pb.BackColor == Color.Blue)
{
if (blue > 0)
{
blue--;
}
this.lblBlue.Text = blue.ToString();
}
this.pbMixColor.BackColor = Color.FromArgb(int.Parse(lblRed.Text), int.Parse(lblGreen.Text), int.Parse(lblBlue.Text));
}
}
看看效果吧!