GID+ DrawImage 函数绘制使图片变大的问题
2011-03-10 16:14
459 查看
最近在使用GDI+时,用了DrawImage函数中的一个重载函数,发现绘制出来的图片变大了,该重载函数如下:
发现换一种重载函数后,就好了:
如下:
在这个函数中可以严格限定绘制图像的大小。
后来在网上找到了这个问题的答案:
原文:http://blog.csdn.net/lanqiao825/archive/2010/02/14/5308808.aspx
在DGI+中绘制图片使用,
DrawImage(Image *image, INT x, INT y, INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit );
这个函数会莫名其妙的将图像放大,而不是按照srcwidth,srcheight指定的大小绘制。
原因:
DrawImage是设备相关的函数,换言之就是,DrawImage会把屏幕的参数带上,所以,它绘制图像的DPI基本都是96。而我的图片是72DPI的。例如,假定一个 Image 对象的宽度为 216 像素而存储的水平分辨率值为 72 点/英寸。因为 216 除以 72 等于 3,所以 DrawImage 将缩放该图像,使其在 96 点/英寸的分辨率下的宽度为 3 英寸。也就是说,DrawImage 将显示一个宽度为 96x3 = 288 像素的图像。
解决方案:
1、在读取的bitmap中,设置SetResolution,设置DPI为96(或者应该读取一下设备?)。
2、或则使用带Rect参数的重载函数则没有问题
Status DrawImage( Image *image, REAL x, REAL y, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, Unit srcUnit );
发现换一种重载函数后,就好了:
如下:
Status DrawImage( Image *image, const Rect &destRect, INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit, ImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData );
在这个函数中可以严格限定绘制图像的大小。
后来在网上找到了这个问题的答案:
原文:http://blog.csdn.net/lanqiao825/archive/2010/02/14/5308808.aspx
在DGI+中绘制图片使用,
DrawImage(Image *image, INT x, INT y, INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit );
这个函数会莫名其妙的将图像放大,而不是按照srcwidth,srcheight指定的大小绘制。
原因:
DrawImage是设备相关的函数,换言之就是,DrawImage会把屏幕的参数带上,所以,它绘制图像的DPI基本都是96。而我的图片是72DPI的。例如,假定一个 Image 对象的宽度为 216 像素而存储的水平分辨率值为 72 点/英寸。因为 216 除以 72 等于 3,所以 DrawImage 将缩放该图像,使其在 96 点/英寸的分辨率下的宽度为 3 英寸。也就是说,DrawImage 将显示一个宽度为 96x3 = 288 像素的图像。
解决方案:
1、在读取的bitmap中,设置SetResolution,设置DPI为96(或者应该读取一下设备?)。
2、或则使用带Rect参数的重载函数则没有问题
相关文章推荐
- GDI+ DrawImage函数拉伸图片时自动渐变问题
- GDI+ DrawImage函数拉伸图片时自动渐变问题
- GDI+ DrawImage函数拉伸图片时自动渐变问题
- GDI+ DrawImage函数拉伸图片时自动渐变问题
- GDI+ DrawImage函数拉伸图片时自动渐变问题
- 【QT】使用QPainter类drawImage函数绘制透明图片的问题
- html5 cancas drawImage 首次加载不显示问题,图片预加载
- 修改图片模糊问题canvas.drawImage
- 【QT】使用QPainter类drawImage函数绘制透明图片的问题
- 使用CGContextDrawImage绘制图片上下颠倒
- context.drawImage绘制图片
- 使用CGContextDrawImage绘制图片上下颠倒解决方法
- ImageMagick: DrawImage(Image*,DrawInfo*) 绘制填充图片时卡住的原因分析
- 解决使用CImage类的Draw函数在显示图片时引起的图像失真问题
- Android 解决图文混排,图片和文字居中对齐问题(ImageSpan)
- 关于小程序image图片不显示的问题
- android中Canvas使用drawBitmap绘制图片
- sql读写图片时Image.FromStream 参数错误的问题解决
- ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法
- java中ImageIO.write(bufferedImage输出图片时,图片的改变问题