• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

截取图片的某个部分(C#源代码)(收藏)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

方法一(get/set pixel)

核心语句:

resultBitmap.SetPixel(x, y, sourceBitmap.GetPixel(offsetX + x, offsetY+y))

        /// <summary>
        /// get a certain rectangle part of a known graphic
        /// </summary>
        /// <param name="bitmapPathAndName">path and name of the source graphic</param>
        /// <param name="width">width of the part graphic</param>
        /// <param name="height">height of the part graphic</param>
        /// <param name="offsetX">the width offset in the source graphic</param>
        /// <param name="offsetY">the height offset in the source graphic</param>
        /// <returns>wanted graphic</returns>
        public Bitmap GetPartOfImage(string bitmapPathAndName, int width, int height,int offsetX,int offsetY)
        {
            Bitmap sourceBitmap = new Bitmap(bitmapPathAndName);
            Bitmap resultBitmap = new Bitmap(width, height);
            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    if (offsetX + x < sourceBitmap.Size.Width & offsetY + y < sourceBitmap.Size.Height)
                    {
                        resultBitmap.SetPixel(x, y, sourceBitmap.GetPixel(offsetX + x, offsetY+y));
                    }
                }
            }
            return resultBitmap;
        }

该方法速度较慢

 

方法二(graphics.drawimage)

核心代码:

Graphics g = Graphics.FromImage(resultBitmap)

g.DrawImage(sourceBitmap, resultRectangle, sourceRectangle, GraphicsUnit.Pixel)

/// <summary>
        /// get a certain rectangle part of a known graphic
        /// </summary>
        /// <param name="bitmapPathAndName">path and name of the source graphic</param>
        /// <param name="width">width of the part graphic</param>
        /// <param name="height">height of the part graphic</param>
        /// <param name="offsetX">the width offset in the source graphic</param>
        /// <param name="offsetY">the height offset in the source graphic</param>
        /// <returns>wanted graphic</returns>
        public Bitmap GetPartOfImage(string bitmapPathAndName, int width, int height, int offsetX, int offsetY)
        {
            Bitmap sourceBitmap = new Bitmap(bitmapPathAndName);
            Bitmap resultBitmap = new Bitmap(width, height);
            using (Graphics g = Graphics.FromImage(resultBitmap))
            {
                Rectangle resultRectangle = new Rectangle(0, 0, Width, height);
                Rectangle sourceRectangle = new Rectangle(0+offsetX, 0+offsetY, Width, height);
                g.DrawImage(sourceBitmap, resultRectangle, sourceRectangle, GraphicsUnit.Pixel);
            }
            return resultBitmap;
        }

速度较快,可完全鄙视掉方法一

 

using (Graphics g = this.CreateGraphics())
{
g.CopyFromScreen(0, 0, 100, 100, new Size(100, 100));
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap