try
{
int Height = pictureBox1.Image.Height;
int Width = pictureBox1.Image.Width;
Bitmap newbitmap = new Bitmap(pictureBox1.Image);
Bitmap oldbitmap = (Bitmap)pictureBox1.Image;
Color pixel;
for (int x = 1; x < Width; x++)
{
for (int y = 1; y < Height; y++)
{
int r, g, b;
pixel = oldbitmap.GetPixel(x, y);
r = 255 - pixel.R;
g = 255 - pixel.G;
b = 255 - pixel.B;
newbitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
//newbitmap.LockBits(x, y, Color.FromArgb(r, g, b)); ;
}
}
this.pictureBox1.Image = newbitmap;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Information);
}底片效果,图片显示效果速度慢,希望大神指导,优化下!
{
int Height = pictureBox1.Image.Height;
int Width = pictureBox1.Image.Width;
Bitmap newbitmap = new Bitmap(pictureBox1.Image);
Bitmap oldbitmap = (Bitmap)pictureBox1.Image;
Color pixel;
for (int x = 1; x < Width; x++)
{
for (int y = 1; y < Height; y++)
{
int r, g, b;
pixel = oldbitmap.GetPixel(x, y);
r = 255 - pixel.R;
g = 255 - pixel.G;
b = 255 - pixel.B;
newbitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
//newbitmap.LockBits(x, y, Color.FromArgb(r, g, b)); ;
}
}
this.pictureBox1.Image = newbitmap;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Information);
}底片效果,图片显示效果速度慢,希望大神指导,优化下!
解决方案 »
- AcceptButton的问题
- 如何调用c++的dll
- 不安装Microsoft .NET Framework 怎么运行客户端程序
- 满足一定要求的排序
- 使用事务执行一个新增,加for循环多个更新,提交时提示:此SqlTransaction已完成,它再也无法使用
- DataGrid排序,修改问题 立即给分
- C#windows应用程序编程中的问题,急求如何解决~
- 为什么运行结果是这样
- 再次提问:如何将一xmlnode节点写入剪贴板?100分相送!(真的没人知道吗?思归等高手关注一下)
- 基于BASS的音乐播放器,请求网络音乐时歌曲下载不完全,求高手解决
- 无法绑定到 DataSource 的属性或列 Birthday,怎么解决?我的代码如下
- ADO.NET更新数据后如何查看是否更新缓存,在线等回答
用内存法:
Bitmap curbitmap=xxx;//(图片)
Rectangle rect=new Rectangle(0,0,curBitmap.Width,curBitmap.Height);
System.Drawing.Imaging.BitmapData bmpdata=curBitmap.LockBits(rect,System.Drawing.Imaging.ImageLockMode.ReadWrite,curBitmap.PixelFormat);
IntPtr ptr=bmpdata.Scan0;
int bytes=curBitmap.Width*curBitmap.Height*3;
byte[] RGBValues=new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr,grayValues,0,bytes);
然后对RGBValues做处理,RGBValues[0],[1],[2],就是一个像素的R,G,B