Vb.net Graphics.DrawString具有高分辨率位图==大文本

Vb.net Graphics.DrawString具有高分辨率位图==大文本,vb.net,graphics,bitmap,gdi+,Vb.net,Graphics,Bitmap,Gdi+,我有一个应用程序,可以创建一个大位图,稍后用户可以添加一些标签。只要基本位图是默认的96x96分辨率,一切都很好。例如,如果我将其增加到300,那么使用Graphics.DrawString的文本就太大了-一个小尺寸的8或10字体显示为20 一方面,考虑到分辨率的提高,这是有意义的,但另一方面,你会认为字体会缩放。当在300对96 dpi的位图上测量时,MeasureString返回一个更大的大小,这并不是我所期望的 我试着通过创建一个适当大小的小位图来欺骗它,将其打印出来,然后粘贴到主图像上。

我有一个应用程序,可以创建一个大位图,稍后用户可以添加一些标签。只要基本位图是默认的96x96分辨率,一切都很好。例如,如果我将其增加到300,那么使用Graphics.DrawString的文本就太大了-一个小尺寸的8或10字体显示为20

一方面,考虑到分辨率的提高,这是有意义的,但另一方面,你会认为字体会缩放。当在300对96 dpi的位图上测量时,MeasureString返回一个更大的大小,这并不是我所期望的

我试着通过创建一个适当大小的小位图来欺骗它,将其打印出来,然后粘贴到主图像上。但是当粘贴到高分辨率时,它会放大粘贴的图像

我唯一能想到的另一件事是创建一个高分辨率的临时位图,打印到它,然后在粘贴到主图像之前缩小它。这似乎还有很长的路要走。是否有允许此操作的合成或覆盖类型设置?字体大小是否仅适用于96 dpi画布


谢谢你的任何提示/建议

字体的大小以英寸表示。一点是1/72英寸。因此,如果你画一个每英寸有300个点的位图,那么你的字体将在要求的英寸数上使用更多的点。因此,当您在300 dpi显示器上显示它时,您将得到您所要求的以英寸为单位的大小

问题是,您不是在300 dpi的设备上显示它,而是在96 dpi的设备上显示它。所以它看起来更大


显然,您并不真正想要一个300 dpi的位图。或者你想把它画小三倍。选择合适的字体。

如果希望以像素为单位的大小保持一致,请在创建字体对象时指定UnitPixel