渲染方法用户控制问题

本文关键字:控制 问题 用户 方法 | 更新日期: 2023-09-27 18:32:38

我想在WPF上的UserControl上绘制网格,所以我重写OnCreate方法,但网格没有在我的UserControl上绘制。请帮忙:)

public partial class FightField : UserControl
{
    public FightField()
    {
        InitializeComponent();
    }
    protected override void OnRender(DrawingContext drawingContext)
    {
        base.OnRender(drawingContext);
        var pen = new Pen(Brushes.Black, 1);
        for (var i = 1; i < 10; i++)
        {
            drawingContext.DrawLine(pen, new Point(this.Height / 10 * i, 0), new Point(this.Height / 10 * i, this.Width));
            drawingContext.DrawLine(pen, new Point(this.Width / 10 * i, 0), new Point(this.Width / 10 * i, this.Height));
        }
    }
}

渲染方法用户控制问题

不要使用

this.Heightthis.Width,而是分别使用 this.ActualHeightthis.ActualWidth

PS.:我尝试了您的代码,它只为我绘制垂直线,因此逻辑也存在一些问题。

工作代码:

drawingContext.DrawLine(pen, new Point(ActualWidth / 10 * i, 0), new Point(ActualWidth / 10 * i, ActualHeight));
drawingContext.DrawLine(pen, new Point(0, ActualHeight / 10 * i), new Point(ActualWidth, ActualHeight / 10 * i));