none
螢幕的DPI變更時,視窗排版變更問題請教 RRS feed

  • 一般討論

  • 程式中有些圖檔位置會根據設定變動,

    所以當使用者的顯示放大為125%或是150%甚至更大時,

    會造成圖檔位置跑掉,

    有什麼方式可以達到解決嗎?

    Form的AutoScaleMode已經設定Dpi了,

    但是應該是變動的Location給的值已經不對了,

    因為是在一般大小(96Dpi)排版下給的值。

    2013年7月24日 上午 09:48

所有回覆

  • 把 AutoScaleMode 設成 None 也沒用嗎 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月24日 上午 11:44
    版主
  • 您可以利用[應用程式資訊清單檔案]來達到您要的功能, 請參考:Declaring Managed Applications As DPI-Aware

    2013年7月25日 上午 02:27
  • 當AutoScaleMode 設成 None 時,

    字體還是會變大,也是會導致排版有問題。

    似乎沒有辦法避免掉。謝謝!

    2013年7月25日 上午 08:17
  • 在2008的VB.Net似乎不支援這種做法。

    在新增項目中,沒有看到"Application Manifest File" template。謝謝!

    2013年7月25日 上午 08:20
  • Visual Basic 請在該專案, 打開專案屬性, 在應用程式頁籤中的 "檢視 Windows 設定" 就是 app manifest 了

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月25日 上午 09:30
    版主
  • 我自己是用 TableLayout 來排版。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2013年7月25日 下午 01:18
  • 有找到該設定了,也上網找一下資料,

    做了兩個相同程式碼專案測試,一個有設定<dpiAware>true</dpiAware>,

    Form的AutoScaleMode都設為None,寬為442,高為431

    在Win7環境下放大150%的設定下,下圖是將兩圖重疊再一起比較,

    有設定dpiAware的圖是小的那個,但是顯示的寬度和高度都與原本的不同,

    沒有設定dpiAware的圖是大的,顯示的寬度和高度與原本設定一樣,

    可是為什麼448*448視窗會比442*431的視窗小?

    2013年7月26日 上午 05:33
  • 您的ScaleLevel是否有變更? Writing High-DPI Win32 Applications
    2013年7月27日 上午 08:01
  • 今天又試了一下,發現下圖的紅框處可以勾選,

    所以一樣選擇150%,然後勾選測試一下,跑出來的視窗大小就相同,

    這樣就很困惑了,那dpiAware的功能好像沒用出?

    2013年7月29日 上午 06:50