关于C#的drawimage

弹指歌 2013-09-26 03:21:10
我要实现截取图片的中间部分并且放大,而且放大倍数可调。比如放大为原图两倍就是将原图分为8份,截取中间的4份并且放大至原图大小,我用到了这个函数,但这个函数定义是从原图的左上角的X和Y坐标为相对位置开始计算,这样的话每选一种倍数就得重新调用一次,我想从能不能从图片的中心为相对位置开始计算呢,这样先取倍数,最后调用一次就行,或者有其他的方法么?
//
// 摘要:
// 在指定位置并且按指定大小绘制指定的 System.Drawing.Image 的指定部分。
//
// 参数:
// image:
// 要绘制的 System.Drawing.Image。
//
// destRect:
// System.Drawing.Rectangle 结构,它指定所绘制图像的位置和大小。将图像进行缩放以适合该矩形。
//
// srcX:
// 要绘制的源图像部分的左上角的 x 坐标。
//
// srcY:
// 要绘制的源图像部分的左上角的 y 坐标。
//
// srcWidth:
// 要绘制的源图像部分的宽度。
//
// srcHeight:
// 要绘制的源图像部分的高度。
//
// srcUnit:
// System.Drawing.GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。
//
// 异常:
// System.ArgumentNullException:
// image 为 null。
public void DrawImage(Image image, Rectangle destRect, int srcX, int srcY, int srcWidth, int srcHeight, GraphicsUnit srcUnit);

...全文
345 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
弹指歌 2013-09-26
  • 打赏
  • 举报
回复
当然是可以做到的,我知道啊,但是这样会增加很多语句。不过我后来想到了,增加一个变量,当选择不同变量时,这个参数也不同,在drawimage的时候就可以以这个参数来变化。比如放大1倍(变量为x):
g.DrawImage(pic, new Rectangle(0, 0, save.Width, save.Height), x*startX, x*startY, 2 * startX, 2 * startY, GraphicsUnit.Pixel);
大概就是这样
threenewbee 2013-09-26
  • 打赏
  • 举报
回复
晕,这不就是一个简单的几何和算术的问题么? 中心坐标就是长/2,宽/2。 难道没有3块钱、7块钱的人民币,你就买不了3块钱、7块钱的东西了?

110,567

社区成员

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

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

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