作者:EMBRACE-老王 | 来源:互联网 | 2023-05-18 21:24
我用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 个解决方案
DrawImage在不指定显示区域大小时会自动根据设备分辨率进行缩放
指定显示区域大小图片不就不是原本的大小了吗。有没有解决方法呢。谢谢楼上的兄弟
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多个像素点;
他是按尺寸打印的;
(96dpi*800)/dpi转换像素因子==38像素*800的分辨率;计算出他能容乃多少个像素点;
dpi转换像素为37.513456487946大堆的小数...按96dpi=38像素 计算
96/38=等于 dpi的转换像素因子;
dpi对打印的作用是 如果打印机支持300dpi 就可以密度一毫米可以容乃110多个像素点;
一厘米则容乃300dpi*110多的像素多少像素按上面的转换公式转换;
dpi代表的是精度
显示器精度越高对图片的显示越细腻;前提是相片的精度跟的上才对