C#中Rectangle(Point, Size) 和Rectangle(Int32, Int32, Int32, Int32) 区别

本文介绍如何使用C#中的Graphics类绘制矩形,并演示了如何通过Rectangle类定义图像处理区域,进而将图像数据复制到内存中以提高处理速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rectangle(Point, Size) 从那个点Point开始,大小为size(width,height)的矩形。
Rectangle(Int32, Int32, Int32, Int32) 前两个int是开始点的x坐标,y坐标,后两个int是width,height。

例1:
using (Graphics g = this.CreateGraphics())
            {
                g.DrawRectangle(Pens.Red, 0, 0, 120, 120);
            }

例2:
Rectangle rectangle = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
//定义一个矩形区域和图像的大小相同;
BitmapData bitmapData = bitmap.LockBits(rectangle, ImageLockMode.ReadWrite, bitmap.PixelFormat);
//以像素的格式锁定该图像,大小为rectangle,且模式为可读可写。

IntPtr intPtr = bitmapData.Scan0;//获得位图数据区首指针
int bytes = bitmap.Width * bitmap.Height * 3;//位图数据区大小(彩色图像,3个波段)
byte[] grayValues = new byte[bytes];//开辟内存,存储位图数据
Marshal.Copy(intPtr, grayValues, 0, bytes);//将位图数据区复制到新开辟的内存中

目的很简单,就是把图像的所有像素值拷贝到内存中;
因为如果每次都对图像直接处理会很慢。
但是拷贝到内存中后,就会加快图像处理的速度。
 

转载于:https://www.cnblogs.com/muxiaoruo/archive/2012/09/03/2669058.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值