调色板

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

本文出自 “Ajax的姑娘” 博客,谢绝转载!

你可能感兴趣的:(代码,可视化编程,调色板)