調色板

y_0034.gif都知道光的三原色吧。他們是:紅、綠、藍。所有的顏色都可以通過這三個顏色搭配而成。通過他們的像素值的不斷變化,就可以得到五顏六色了。

i_f24.gif鼠標進入事件(獲得焦點),

i_f24.gif窗體加載事件(註冊事件,調用方法),

i_f24.gif鼠標滾動事件(判斷方向,並設置三色的像素值)

下面看看怎麼做到的:

//當鼠標進入紅色區域時,該區域獲得焦點
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));
    }
}

看看效果吧!

162230716.png

j_0001.gifj_0001.gifj_0001.gifj_0001.gif

左邊的三種顏色就是光的三原色,而中間的紫色就是通過調節三原色的像素值調配出來的。

注意:每一種顏色的最小值是0,最大值是255.

j_0047.gifAjax的姑娘,加油!j_0047.gif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章