一个.net中关于this.Region的bug。大家帮忙进来一下,MS的工程师最好也进来看看。。。。 ;(

project 2002-06-18 02:11:59
我写了一个函数用于根据指定的Bitmap,用非背景颜色的区域(事先用统一的颜色填充要去掉的区域)Union出新的不规则Region。最后再this.Region = ResultRegion;

遇到的问题是:当我用一张小图片时,没问题。但当我用一个大图片时,this.Region = ResultRegion;会造成StackOver.为什么???
而且如果我不用this.Region 和Region类,而是全部用API代替,则一切正常!!!!!!!!

代码如下:
private Region GetImageRegion2(Bitmap Image)
{
Region r1;
int x,y;
r1 = new Region(new Rectangle(0, 0, 1, 1));
for (y = 0;y <Image.Height;y++)
{
for (x = 0;x < Image.Width;x++)
{
//如果该点的颜色 != Red
if (!((Image.GetPixel(x, y).R ==255) && (Image.GetPixel(x, y).G ==0) && (Image.GetPixel(x, y).B ==0)))
{
r1.Union(new Rectangle(x, y, 1, 1));
}
}
}
return r1;
}

private void button1_Click(object sender, System.EventArgs e)
{
Region ResultRegion;
ResultRegion = GetImageRegion2((Bitmap)pictureBox1.Image);
this.Region = ResultRegion;
}
...全文
50 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
project 2002-06-18
  • 打赏
  • 举报
回复
单独调用GetImageRegion2函数不给this.Region赋值,不会报错。只要一赋值就报错。
另,Region类有一个Static方法可以根据API的hrgn返回Region,该方法也有问题。
我用API形成的hrgn通过setwindowrgn改变窗口区域,没问题!!
如果让Region.FromHrgn通过我用API形成的hrgn返回Region,则虽然没有stackover,但返回的区域却少了一大块!!!!!!!!!

.net真是问题多多。。。。。。。。。。。。。。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧