背景:
我正在将控件从WinForms转换为WPF。在WinForms中,我覆盖了PictureBox并使用OnPaint
事件来绘制我需要的控件。该控件将处理所有双缓冲和裁剪。
我将控件转换为WPF,现在继承自Canvas。我正在覆盖OnRender
事件并将所有内容绘制到DrawingContext,但看起来DrawingContext允许我将控件绘制到视图的其余部分:
在上图中,实心深粉色框为控件,浅粉色框和绿色线条绘制在(0,0),但蓝色框绘制在(0,-100)。
在WinForms中,PictureBox会剪切不在控件区域内的任何内容。
另外,我发现如果盒子低于控件,蓝色框会被剪裁。我认为这是因为它确实在封闭网格下方剪辑,但我不确定。
的问题:
OnRender
方法中的绘图
控制到特定区域?我尝试向Canvas孩子添加形状,但这非常慢。
答案 0 :(得分:2)
问题与Canvas如何呈现内容有关。这意味着它的孩子可以在其实际区域之外呈现。但是,您可以通过设置属性来避免该默认行为
ClipToBounds
到true
:
yourCanvas.ClipToBounds = true;