加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# 将透明图片的非透明区域转换成Region的实例代码

发布时间:2020-12-15 04:16:00 所属栏目:百科 来源:网络整理
导读:需要设置允许不安全代码..... 项目-属性-生成-允许不安全代码 复制代码 代码如下: /// summary /// 根据图片得到一个图片非透明部分的区域 /// /summary /// param name="bckImage"/param /// returns/returns private unsafe Region GetRegion(Bitmap bckIm

需要设置允许不安全代码.....项目->属性->生成->允许不安全代码

复制代码 代码如下:

/// <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,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;
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读