Simple DrawingContext未绘制到UI
本文关键字:UI 绘制 DrawingContext Simple | 更新日期: 2023-09-27 18:26:56
我有一个RenderChart
方法,它封装在UserControl
的代码后面,有望在地图上绘制一些图表。我简化了方法,试图获得一些文本渲染,但没有成功:
private void RenderChart()
{
DrawingVisual newVisual = new DrawingVisual();
using (DrawingContext dc = newVisual.RenderOpen())
{
Rect rect = new Rect(new Point(160, 100), new System.Windows.Size(320, 80));
dc.DrawRectangle(Brushes.Maroon, (Pen)null, rect);
dc.Close();
}
if (this.visual != null)
{
this.RemoveVisualChild(this.visual);
}
this.AddVisualChild(newVisual);
this.visual = newVisual;
this.RefreshMargin();
}
每当我在使用myCanvas.Children.Add(myEllipse);
之前画过简单的形状等时
事实如果我定义了一个椭圆&如上所述,在不使用DrawingContext的情况下将其添加到画布中,我得到了预期的结果。
我是否需要将绘图上下文添加到控件中的面板中,或者是否有其他原因导致它不会在UI中渲染?
UserControl
类最终派生自一个名为UIElement
的类,该类定义了一个虚拟OnRender
方法,您可以重写该方法以在控件上"绘制"(正如Clemens在问题注释中所建议的那样)。以下示例将绘制一个与用户控件大小相同的蓝色矩形:
protected override void OnRender(DrawingContext dc)
{
dc.DrawRectangle(Brushes.Blue, null, new Rect(0, 0, ActualWidth, ActualHeight));
}
我建议重写OnRender
是更传统的方法,而不是尝试使用DrawingVisual
。使用此技术可能遇到的唯一潜在问题是,图形将显示在用户控件中包含的所有其他控件后面。