Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 渲染与背景叠加_.net_Wpf - Fatal编程技术网

.net 渲染与背景叠加

.net 渲染与背景叠加,.net,wpf,.net,Wpf,我使用WPF用户控件的OnRender方法绘制了一些图形。现在,我设置了一个白色背景,我看到背景在我的画上,所以它不再可见。如何把图画放在背景上 Protected Overrides Sub OnRender(drawingContext As DrawingContext) MyBase.OnRender(drawingContext) If Me._DisplayMargin Then Me.DrawMargin(drawingContext) E

我使用WPF用户控件的
OnRender
方法绘制了一些图形。现在,我设置了一个白色背景,我看到背景在我的画上,所以它不再可见。如何把图画放在背景上

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

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

  End Sub

问题是OnRender不能很好地与WPF用户控件配合使用,请参见原因。调用
base.OnRender
的顺序并不重要(当然,在自己的渲染代码之前调用它是正确的,因为您希望绘制基类可能绘制的内容)


如果要在OnRender中进行所有绘制,只需从
FrameworkElement
派生,而不是从
UserControl

派生,这仅仅是渲染的顺序吗?我们能看到代码吗?@Phil,完成了,在DrawMargin中,我做了一些类似于
drawingContext.DrawRectangle(Brush.Yellow,myPen,myMarginRectangle)
@Phil,查看我之前的评论。正如Phil所说,您的绘图顺序是错误的。在base.OnRender()之前调用DrawMargin(),我需要在MyUserControl上添加子项。。。所以我需要像UserControl这样的东西。。。一个容器…然后您可以将派生的FrameworkElement作为额外的子元素(在其他子元素之前)添加到您的UserControl。或者对用户控件的
背景使用。