GDI+入门(十一、GDI+实例——底片效果)

十一、GDI+实例——底片效果

bool istrue = false;

        Bitmap bmp;

        private void button1_Click(object sender, EventArgs e)

        {

            if (!istrue)

            {

                bmp = new Bitmap(Application.StartupPath + "//1.jpg");

                Color color;

                for (int i = 0; i < bmp.Width; i++)

                {

                    for (int j = 0; j < bmp.Height; j++)

                    {

                        color = bmp.GetPixel(i, j);

                        Color resultColor = Color.FromArgb(255, 255 - color.R, 255 - color.G, 255 - color.B);

                        bmp.SetPixel(i, j, resultColor);

                    }

                }

                Graphics g = panel2.CreateGraphics();

                g.DrawImage(bmp, panel2.ClientRectangle);

                g.Dispose();

                istrue = true;

              //  bmp.Dispose();

            }

        }

 

        private void panel1_Paint(object sender, PaintEventArgs e)

        {

            Bitmap bmp = new Bitmap(Application.StartupPath + "//1.jpg");

            Graphics g = panel1.CreateGraphics();

            g.DrawImage(bmp, panel1.ClientRectangle);

            g.Dispose();

            bmp.Dispose();

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            if (istrue)

            {

                Color color;          

                for (int i = 0; i < bmp.Width; i++)

                {

                    for (int j = 0; j < bmp.Height; j++)

                    {

                        color = bmp.GetPixel(i, j);

                        Color resultColor = Color.FromArgb(255, 255 - color.R, 255 - color.G, 255 - color.B);

                        bmp.SetPixel(i, j, resultColor);

                    }

                }

                Graphics g = panel3.CreateGraphics();

                g.DrawImage(bmp, panel3.ClientRectangle);

                g.Dispose();

                bmp.Dispose();

                istrue = false;

            }

        }

底片效果其实就是将图像像素点上的颜色分量用255减去颜色分量得到的

  Color resultColor = Color.FromArgb(255, 255 - color.R, 255 - color.G, 255 - color.B);

还原底片则用255减去底片像素点上的颜色分量值就可以了

  Color resultColor = Color.FromArgb(255, 255 - color.R, 255 - color.G, 255 - color.B);

第一幅图为原图,第二幅图为底片效果图,第三幅图为底片效果恢复图

本人也在学习GDI+,写得比较简单,让高手见笑了。欢迎高手给我指点

邮箱:bobui@163.com

QQ125941562

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值