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

WPF 圖形基礎:合成、物件模型與解析度獨立性

     編輯:關於.NET

深度合成:圖形與 UI 的無縫整合

WPF 最大的特色在於「合成」——圖形元素(Shape)就是普通的 UI 樹節點,可自由混入任何容器、控件甚至文字內部。傳統技術(WinForms GDI+、Cocoa Quartz 2D)將繪圖 API 與控件模型分離,導致混合困難;WPF 則打破這種界限。

圖形與文字混合

範例展示:StackPanel 中交替放置 TextBlock、Rectangle、Ellipse、Button;TextBlock 內內嵌 Ellipse;Button 內用 Canvas 繪製笑臉並配合文字。這種合成能力延伸至控件模板,徹底改變自定義外觀的方式。

按鈕內混合圖形
Grid 佈局按鈕內容

繪圖物件模型:保留模式圖形

傳統即時模式需在重繪事件中重新發送繪圖指令,更新局部極其麻煩。WPF 採用保留模式:將形狀作為物件加入 UI 樹,修改屬性(Width、Fill 等)即自動觸發重繪,WPF 負責處理疊加順序與髒區計算。

橢圓點擊變寬

程式碼只需:((Ellipse)sender).Width += 10;。雖然物件模型佔用較多記憶體,對海量資料(如地圖)可改用輕量級的可視化層(Visual Layer),稍後章節介紹。

解析度獨立性與裝置獨立像素

WPF 內建縮放與旋轉支援,不僅針對繪圖,整個 UI 樹皆可透過 LayoutTransform 縮放。預設單位為「裝置獨立像素」:1 DIP = 1/96 英吋。系統依螢幕 DPI 自動換算物理像素,確保實體尺寸一致。

按鈕放大 3 倍
圖片放大失真對比

圖 7-6 為向量縮放,邊緣銳利;圖 7-7 為點陣圖插值放大,產生鋸齒或模糊。WPF 利用 GPU 像素著色器實現高質量向量光柵化。

核心三要素:形狀、筆刷、鋼筆

  • Shape:Ellipse、Rectangle、Path、Line、Polyline、Polygon 等。
  • Brush:SolidColorBrush、LinearGradientBrush、RadialGradientBrush、ImageBrush、DrawingBrush、VisualBrush。
  • Pen:以 Brush 為基礎,增加粗細、虛線、線帽、線接合等樣式。
各類形狀示例
筆刷與鋼筆效果

合成引擎與 GPU 加速

WPF 合成模型支援任意形狀元素疊加、局部透明、全邊緣抗鋸齒、合成前變換。底層建構於 Direct3D,利用 3D 顯示晶片的多邊形繪圖、像素著色器、顯存快取等能力加速 2D 渲染,大幅提升重繪效能。

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