簡體   English   中英

Winforms應用程序在繪制圖表時更改高dpi監視器上的縮放比例

[英]Winforms application changes scaling on high dpi monitor when drawing a chart

我有一個Winforms應用程序(C#、. NET 4.7),在使用1920x1080顯示器的系統上沒有問題。 我在主窗口中將AutoScaleMode設置為Font,並將true添加到清單中。 在具有高分辨率(3840x2160)屏幕的計算機上運行該程序似乎也可以正常工作。 一切都正確縮放,並且一切都可讀。 直到我打開數據文件並在“地圖”或“圖表”控件上顯示結果。 然后整個程序突然重新縮放到其原始大小的大約50%,並且所有字體變小了。 使用Windows顯示設置更改字體大小或分辨率無效。 是什么原因導致運行時縮放,我該如何解決?

遵循本文所述的所有最佳做法后:它仍然不起作用。 但是,Telerik網站上的另一個綜合說明使我走上了正確的道路。 該問題是由GMap控件引起的,但可能是由在不同系統上設計的任何第三方控件引起的。 該控件在Designer.cs文件中包含一個縮放設置:

this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);

當您創建新控件時,此設置由IDE自動添加,並且基於創建該控件的系統的DPI設置。 在96 DPI系統上,這始終是

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

因此,我為我的應用創建的所有表單都具有基於96DPI的設置,但是GMap控件具有不同的設置。 重新繪制GMap控件時,它導致整個應用程序使用錯誤的AutoScaleDimensions進行縮放。 解決方案只是搜索所有出現的AutoScaleDimensions,並將它們全部設置為(6F,13F)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM