面板科技日新月異,螢幕解析度隨之高漲,現在連5吋的手機也可以塞的下Full HD 的高畫質解析度了,但是高解系度也為Windows 作業系統帶來了部分的不方便,譬如說文字太小,圖片解析度不足,還有在程式開發上某些弔詭的情況,如本篇文章即將要為各為解答的問題。
本篇文章將引導您在開發 Windows Form 時 Icon在開始工具列模糊的問題。
面板科技日新月異,螢幕解析度隨之高漲,現在連5吋的手機也可以塞的下Full HD 的高畫質解析度了,但是高解系度也為Windows 作業系統帶來了部分的不方便,譬如說文字太小,圖片解析度不足,還有在程式開發上某些弔詭的情況,如本篇文章即將要為各為解答的問題。
本篇文章將引導您在開發 Windows Form 時 Icon在開始工具列模糊的問題。
問題說明:
當小螢幕的解析度太高時,我們會選擇使用Windows 內建的功能,將字體調大,如此一來對眼睛也比較好!
但是當我們調整了字體大小後,隨之產生了開發程式上的困難,就是在Task Bar 的 Icon 怎麼糊糊的?! 不~~~ 這是什麼妖術?!
此時瞬間風雲變色、天搖地動,從天而降的龐然大物上面寫著 '解決方案在此"!!!
百姓本無不歡天喜地,終於找到 "Icon在開始工具列模糊" 的解決方法啦!!!
扯遠了不好意思... 進入正題
本文已Visual Studio 2013 開發 C# Windows From 應用程式為例。
步驟一:
首先先準備一張透明的PNG圖檔,準備當作Windows Form的Icon
步驟二:
將PNG圖檔轉換 icon ,可以使用線上轉換,這邊不多做說明。
轉換完後將檔案下載
步驟三:
開啟Visual Studio 在專案裡的Form開啟,並點選 Icon 屬性,指向剛剛所轉換完成的Icon!
步驟四:
在專案底下新增一個【Application Manifest File】,名稱使用預設的就好了【app.manifest】
步驟五:
修改【app.manifest】
啟用在不同DPI下自動適應解析度的功能
加入以下項目
<asmv1:application>
<asmv1:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv1:windowsSettings>
</asmv1:application>
整個檔案會看起來像這樣(此範例已將預設註解掉的程式碼刪除,方便理解)
<?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>
步驟四:
在【方案總管】中的專案點選【右鍵】→【屬性】
步驟五:
在【應用程式】的分頁中,找到【Manifest】的選項,選擇為剛剛製作好的【app.manifest】。
步驟六:
在【偵錯】的分頁中,找到【啟用Visual Studio 裝載處理續】的選項,取消打勾 。
步驟七:
執行程式,完美運行在150%字體大小上運行,突然覺得世界真美好!!
注意:較舊版的Visual Studio 編譯時並不會把Manifest檔案和exe檔編譯在一起,所以會產生【app.manifest】檔案,若主程式沒有跟app.manifest檔放在一起的話,則完全沒有效果,所以必須將【app.manifest】檔案和主程式放在同一個資料夾內!
此方法也可以用於Visual Studio 2012以下的版本,並且編譯在Windows XP的環境下使用,在Windows 8.1也可以向下支援,完美運行在各版本的Windows 作業系統中 。
詳細參閱 : Writing High-DPI Win32 Applications
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處