在WPF窗體中重繪
阿新 • • 發佈:2018-12-17
原文:
在WPF窗體中重繪
寫這篇主要是為了驗證任何元素自身都具備繪圖功能.
在預設Window中重寫OnRender方法
protected override void OnRender(DrawingContext drawingContext) { drawingContext.DrawRectangle(Brushes.White, null, new Rect(0, 0, this.ActualWidth, ActualHeight)); drawingContext.DrawRectangle(Brushes.Blue, null, new Rect(0, 0, 300, 300)); drawingContext.DrawRectangle(Brushes.Green, null, new Rect(0, 0, 200, 200)); drawingContext.DrawRectangle(Brushes.Red, null, new Rect(0, 0, 100, 100)); base.OnRender(drawingContext); }
結果還是空白一片.
窗體的預設視覺樹
解決方法1:去掉預設視覺樹
protected override Visual GetVisualChild(int index) { return null; }
結果恢復正常
但此方法破壞了窗體預設視覺樹,影響了其內部功能
解決方法2:將預設北京顏色設定為空
this.Background = null;
搞了半天原來是被遮住了
記錄一下技巧