首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Paint.NET 學習筆記(三):視窗架構與熱鍵系統

     編輯:關於.NET

Paint.NET 所有視窗繼承自 PdnBaseForm(實作 ISnapManagerHost),浮動視窗繼承 FloatingToolForm(實作 ISnapObstacleHost)。

BaseForm 核心功能

熱鍵註冊系統

  • RegisterFormHotKey(Keys, Function<bool,Keys>):註冊視窗級熱鍵,委託發起者需實作 IComponent 或 IHotKeyTarget。儲存於靜態字典 hotkeyRegistrar。
  • 覆寫 ProcessCmdKey 處理鍵盤訊息,查找字典執行對應委託。
  • UnregisterFormHotKey:移除字典項目,並處理 Disposed 事件自動清理。

MainForm 關鍵實作

  • AppWorkspace:畫布核心物件。
  • FloaterOpacityTimer:控制浮動視窗透明度漸變。滑鼠進入→不透明(1.0);滑鼠離開→半透明(0.75);漸變步進 0.125/0.0625。捕捉 Win32Exception 相容顯卡驅動問題。
  • 啟動延遲載入濾鏡:Timer 延遲呼叫 PopulateEffects(),避免啟動時大量載入 DLL 造成假死。
  • Application.Idle 事件:處理訊息佇列。

拖放開啟檔案

覆寫 OnDragDrop:取得檔案清單,彈出 TaskDialog 詢問「新分頁開啟」或「匯入圖層」。TaskDialog 回傳 TaskButton,封裝按鈕文字、圖示、DialogResult,客製化程度高、外觀優美。選擇後分別呼叫 OpenFilesInNewWorkspace 或 ImportFromFileAction,並將 HistoryMemento 推入歷史記錄堆疊。

關閉時儲存設定

SaveSettings() 將視窗尺寸、位置、狀態、浮動視窗可見度、SnapManager 狀態寫入登錄檔 (HKEY_CURRENT_USER\Software\Paint.Net),下次啟動自動還原。AppWorkspace.SaveSettings() 同步儲存 MRU (最近使用清單)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved