热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

当DPI不同时DrawImage绘出的图像变的很大的问题

我用GDI+方法显示JPG、PNG、BMP图片graphics.DrawImage(&image,0,0);有一幅图显示出来很大,在屏幕上只显示了图片的左上角的一点,其它都显示在程
我用GDI+方法显示JPG、PNG、BMP图片
graphics.DrawImage(&image,0,0);

有一幅图显示出来很大,在屏幕上只显示了图片的左上角的一点,其它都显示在程序窗口外面了

而显示另一幅图片正常的,

后发现两图的不同。变大的这个JPG是DPI为1,正常显示的JPG的DPI是96

有什么办法让显示的图不受DPI的影响呢?

我知道有强制大小的,但是我不想强制大小。想让程序按图片的大小来显示。

谢谢大家

8 个解决方案

#1


一夜了。没有人关心我的问题啊

#2


再顶一下。有没兄弟有这个问题的啊

#3


是不是我这个问题太难了啊。兄弟们啊

#4


DrawImage在不指定显示区域大小时会自动根据设备分辨率进行缩放

#5


指定显示区域大小图片不就不是原本的大小了吗。有没有解决方法呢。谢谢楼上的兄弟

#6


5楼你没理解dpi的意思,和实际尺寸,和显示器支持的dpi,和显示器的一个dpi容乃多少个像素;

96dpi 有37-38个像素点可以说是38个像素点
1dpi 他的像素点按计算来说第一1
如果同样大小尺寸的图片 因为一个dpi是1 一个dpi是96的图片;
他们的显示大小比例按像素计算是  1/38      96 dpi的图片是1dpi的38倍...

300dpi有110多个像素点吧。
显示是按像素的...
比如显示器的dpi是96最高;一般多是96dpi显示方式;也就是说
38dpi*800的分辨率计算出他能容乃多少个像素点;
比如图片的dpi和显示器的dpi是一样的大小。他显示一个dpi占用1的分辨率



dpi对打印的作用是  如果打印机支持300dpi   就可以密度一厘米可以容乃110多个像素点;
他是按尺寸打印的;

#7


(96dpi*800)/dpi转换像素因子==38像素*800的分辨率;计算出他能容乃多少个像素点;
dpi转换像素为37.513456487946大堆的小数...按96dpi=38像素 计算
96/38=等于 dpi的转换像素因子;

#8


dpi对打印的作用是 如果打印机支持300dpi 就可以密度一毫米可以容乃110多个像素点;
一厘米则容乃300dpi*110多的像素多少像素按上面的转换公式转换;
dpi代表的是精度
显示器精度越高对图片的显示越细腻;前提是相片的精度跟的上才对

推荐阅读
author-avatar
EMBRACE-老王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有