rivate void button2_Click(object sender, EventArgs e)
{
Bitmap pic1 = new Bitmap(pictureBox1.Image);
int w, h;
w = pic1.Width;
h = pic1.Height;
Bitmap pic2 = new Bitmap(w, h, PixelFormat.Format32bppArgb);
BitmapData obmp = pic1.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData nbmp = pic2.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* op = (byte*)obmp.Scan0.ToPointer();
byte* np = (byte*)nbmp.Scan0.ToPointer();
int i, j, r, g, b, cc;
for (j = 0; j < h; i++)
{
for (i = 0; i < w; i++)
{
r = op[0];
g = op[1];
b = op[2];
cc = (r + g + b) / 3;
np[0] = (byte)cc;
np[1] = (byte)cc;
np[2] =(byte) cc;
op += 3;
np += 3;
}
op += obmp.Stride - w * 3;
np += nbmp.Stride - w * 3;
}
}
pic1.UnlockBits(obmp);
pic2.UnlockBits(nbmp);
pictureBox1.Image=pic2;
}这段程序能运行,但是在单机按钮运行时,就出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的问题,停在了“r = op[0];”请问这是什么原因,怎么解决呀
{
Bitmap pic1 = new Bitmap(pictureBox1.Image);
int w, h;
w = pic1.Width;
h = pic1.Height;
Bitmap pic2 = new Bitmap(w, h, PixelFormat.Format32bppArgb);
BitmapData obmp = pic1.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData nbmp = pic2.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* op = (byte*)obmp.Scan0.ToPointer();
byte* np = (byte*)nbmp.Scan0.ToPointer();
int i, j, r, g, b, cc;
for (j = 0; j < h; i++)
{
for (i = 0; i < w; i++)
{
r = op[0];
g = op[1];
b = op[2];
cc = (r + g + b) / 3;
np[0] = (byte)cc;
np[1] = (byte)cc;
np[2] =(byte) cc;
op += 3;
np += 3;
}
op += obmp.Stride - w * 3;
np += nbmp.Stride - w * 3;
}
}
pic1.UnlockBits(obmp);
pic2.UnlockBits(nbmp);
pictureBox1.Image=pic2;
}这段程序能运行,但是在单机按钮运行时,就出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的问题,停在了“r = op[0];”请问这是什么原因,怎么解决呀
解决方案 »
- vs2010 做的winform程序 打包安装到其它电脑运行就出现异常!
- 请问:如何比较两个Treeview数据不同之处呢?
- 这样的验证码谁能识别,能给出代码谢之!
- C# 获取xml里面的信息
- LISTVIEW的初初初级问题~~~~
- lanMsg的程序设计原理,不明白呀
- 以前在.net 2005的工具菜单里有一项UML,现在怎么找不到了?
- 读写注册表的问题
- 在Form1窗体上如何设置Form2窗体上的控件ctr2的属性Enabled为true?
- 怎样向另一个程序的窗体发送消息? (已经用spy++查到目标窗体的句柄)
- 求学习方法请给我点帮助
- winform中,导入一个Excel并把他保存为dataset时,出现“外部表不是预期的格式”???
for (j = 0; j < h; i++)
{
for (i = 0; i < w; i++)
都是i++吗?
{
for (i = 0; i < w; i++)
改成这样就OK了 for (j = 0; j < h; j++)
{
for (i = 0; i < w; i++)
问一下,这个变灰的功能叫什么?
for (i = 0; i < w; i++)
{
for (i = 0; i < w; i++)
{
第一个循环体内是i++吗