1. 程式人生 > >在WPF窗體中重繪

在WPF窗體中重繪

原文: 在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); }

結果還是空白一片.
窗體的預設視覺樹

image_thumb1

解決方法1:去掉預設視覺樹

protected override Visual GetVisualChild(int index)
{
    return null
; }

結果恢復正常

image

但此方法破壞了窗體預設視覺樹,影響了其內部功能

解決方法2:將預設北京顏色設定為空

this.Background = null;

搞了半天原來是被遮住了

記錄一下技巧