2012-03-26 17 views
0

WPFユーザーコントロールのOnRenderメソッドで図面を描画します。さて、私は白い背景を設定し、バックグラウンドは私の絵の上にあるので、それはもう見えません。背景に描く方法は?OnRenderと背景の重ね合わせ

Protected Overrides Sub OnRender(drawingContext As DrawingContext) 
    MyBase.OnRender(drawingContext) 

    If Me._DisplayMargin Then 
     Me.DrawMargin(drawingContext) 
    End If 

    End Sub 
+0

レンダリングする順番ですか?コードを見ることはできますか? – Phil

+0

@Phil、完了、DrawMargin内で 'drawingContext.DrawRectangle(Brushes.Yellow、myPen、myMarginRectangle) 'のようなことをします。 – moldovanu

+0

@Phil、前のコメントを参照してください。 – moldovanu

答えて

2

問題はOnRenderがhere理由を参照してください、WPFユーザーコントロールでうまく動作しないということです。 base.OnRenderと呼ぶ順序は関係ありません(もちろん、基底クラスによって描画された可能性のあるものは以上でを描画したいので、独自のレンダリングコードの前に呼び出すことができます)。

すべての描画をOnRenderで行う場合は、UserControlの代わりにFrameworkElementから単純に派生します。

+0

私はそのMyUserControlに子を追加する必要があります...だから、私はUserControl ...コンテナのようなものが必要です... – moldovanu

+0

次に、派生したFrameworkElementを追加の子として追加できます他のものの前に)あなたのUserControlに。または、[DrawingBrush](http://msdn.microsoft.com/en-us/library/system.windows.media.drawingbrush.aspx)を使用して、UserControlの「背景」を表示します。 – Clemens

関連する問題