c# 怎么高质量截取指定位置图片
c# 如何高质量截取指定位置图片
项目需求是这样的, 软件有一个绘图区域 如画布 600*6000 ,用户在此画布上绘制完保存时程序要把用户画图所在区域坐标截取出来保存为图片 如 绘制的300*400 的图片, 现在的做法是调用win API 但是发现图片失真,有更好的办法吗?
现有的办法是
绘制的原图

截取的图片

------解决思路----------------------
既然用DotNet就要用它先进的地方,一行Bitmap.Clone代码就可以搞定:
------解决思路----------------------
直接保存的,就别转来转去的
项目需求是这样的, 软件有一个绘图区域 如画布 600*6000 ,用户在此画布上绘制完保存时程序要把用户画图所在区域坐标截取出来保存为图片 如 绘制的300*400 的图片, 现在的做法是调用win API 但是发现图片失真,有更好的办法吗?
现有的办法是
Graphics g1 = this.designer1.CreateGraphics();
Bitmap myImage = new Bitmap(rec.Width, rec.Height, g1);
Graphics g2 = Graphics.FromImage(myImage);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, rec.Width, rec.Height, dc1, rec.X, rec.Y, 13369376);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
g1.Dispose();
Bitmap map = ImageFormat.toBitmap(myImage, 255);
//印章图片缓存起来
Maticsoft.Common.DataCache.SetCache("SealImage", map);
MessageBox.Show("保存成功");
f.Dispose();
f.Close();
绘制的原图
截取的图片
------解决思路----------------------
既然用DotNet就要用它先进的地方,一行Bitmap.Clone代码就可以搞定:
Bitmap bmp = new Bitmap(@"c:\temp\penguins.jpg");
Bitmap bmp2 = bmp.Clone(new Rectangle(100, 100, 300, 200), bmp.PixelFormat);
bmp2.Save(@"c:\temp\bmp2.jpg");
------解决思路----------------------
直接保存的,就别转来转去的