C# Windows Form 解決 Icon在開始工具列模糊的問題,字體大小150% 高解析度完美運行。

  • 4590
  • 0
  • C#
  • 2015-06-08

面板科技日新月異,螢幕解析度隨之高漲,現在連5吋的手機也可以塞的下Full HD 的高畫質解析度了,但是高解系度也為Windows 作業系統帶來了部分的不方便,譬如說文字太小,圖片解析度不足,還有在程式開發上某些弔詭的情況,如本篇文章即將要為各為解答的問題。


本篇文章將引導您在開發 Windows Form 時 Icon在開始工具列模糊的問題。

面板科技日新月異,螢幕解析度隨之高漲,現在連5吋的手機也可以塞的下Full HD 的高畫質解析度了,但是高解系度也為Windows 作業系統帶來了部分的不方便,譬如說文字太小,圖片解析度不足,還有在程式開發上某些弔詭的情況,如本篇文章即將要為各為解答的問題。


本篇文章將引導您在開發 Windows Form 時  Icon在開始工具列模糊的問題。

 

問題說明:

當小螢幕的解析度太高時,我們會選擇使用Windows 內建的功能,將字體調大,如此一來對眼睛也比較好!

 1

 

但是當我們調整了字體大小後,隨之產生了開發程式上的困難,就是在Task Bar 的 Icon  怎麼糊糊的?! 不~~~ 這是什麼妖術?!

 

2 3

 

此時瞬間風雲變色、天搖地動,從天而降的龐然大物上面寫著 '解決方案在此"!!!

百姓本無不歡天喜地,終於找到 "Icon在開始工具列模糊" 的解決方法啦!!!

扯遠了不好意思... 進入正題

 

本文已Visual Studio 2013 開發 C# Windows From 應用程式為例。

 

步驟一:

首先先準備一張透明的PNG圖檔,準備當作Windows Form的Icon

0

 

步驟二:

將PNG圖檔轉換 icon ,可以使用線上轉換,這邊不多做說明。

參考http://www.convertico.com/

轉換完後將檔案下載

 

步驟三:

開啟Visual Studio 在專案裡的Form開啟,並點選 Icon 屬性,指向剛剛所轉換完成的Icon!

4

 

步驟四:

在專案底下新增一個【Application Manifest File】,名稱使用預設的就好了【app.manifest】

 6

步驟五:

修改【app.manifest】

啟用在不同DPI下自動適應解析度的功能

加入以下項目

 

<asmv1:application>
    <asmv1:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv1:windowsSettings>
</asmv1:application>

 

整個檔案會看起來像這樣(此範例已將預設註解掉的程式碼刪除,方便理解)

 4-1

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" 
                xmlns="urn:schemas-microsoft-com:asm.v1" 
                xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
                xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
    </application>
  </compatibility>

  <asmv1:application>
    <asmv1:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv1:windowsSettings>
  </asmv1:application>
</asmv1:assembly>

 

步驟四:

在【方案總管】中的專案點選【右鍵】→【屬性】

 5

 

步驟五:

在【應用程式】的分頁中,找到【Manifest】的選項,選擇為剛剛製作好的【app.manifest】。

7

 

步驟六:

在【偵錯】的分頁中,找到【啟用Visual Studio 裝載處理續】的選項,取消打勾 。

8

 

步驟七:

執行程式,完美運行在150%字體大小上運行,突然覺得世界真美好!!

9

 

注意:較舊版的Visual Studio 編譯時並不會把Manifest檔案和exe檔編譯在一起,所以會產生【app.manifest】檔案,若主程式沒有跟app.manifest檔放在一起的話,則完全沒有效果,所以必須將【app.manifest】檔案和主程式放在同一個資料夾內!

參閱 : TIPS-將Manifest內嵌至EXE檔案

此方法也可以用於Visual Studio 2012以下的版本,並且編譯在Windows XP的環境下使用,在Windows 8.1也可以向下支援,完美運行在各版本的Windows 作業系統中 。

詳細參閱 : Writing High-DPI Win32 Applications

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處

SUKI

HOLIESTAR