C# 将透明图片的非透明区域转换成Region的实例代码
程序员文章站
2024-02-19 23:40:58
需要设置允许不安全代码.....项目->属性->生成->允许不安全代码
复制代码 代码如下:///  ...
需要设置允许不安全代码.....项目->属性->生成->允许不安全代码
复制代码 代码如下:
/// <summary>
/// 根据图片得到一个图片非透明部分的区域
/// </summary>
/// <param name="bckimage"></param>
/// <returns></returns>
private unsafe region getregion(bitmap bckimage)
{
graphicspath path = new graphicspath();
int w = bckimage.width;
int h = bckimage.height;
bitmapdata bckdata = null;
try
{
bckdata = bckimage.lockbits(new rectangle(0, 0, w, h), imagelockmode.readonly, pixelformat.format32bppargb);
uint* bckint = (uint*)bckdata.scan0;
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i++)
{
if ((*bckint & 0xff000000) != 0)
{
path.addrectangle(new rectangle(i, j, 1, 1));
}
bckint++;
}
}
bckimage.unlockbits(bckdata); bckdata = null;
}
catch
{
if (bckdata != null)
{
bckimage.unlockbits(bckdata);
bckdata = null;
}
}
region region = new system.drawing.region(path);
path.dispose(); path = null;
return region;
}
上一篇: Java多线程yield心得分享
下一篇: 详解python发送各类邮件的主要方法