2016-01-30 2 views
0

Я хочу нарисовать сетку на UserControl на WPF, поэтому я переопределяю метод OnCreate, но сетка не использует мой UserControl. Помогите пожалуйста :)OnRender Method UserControl issue

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)); 
     } 
    } 
} 

ответ

1

Вместо использования this.Height и this.Width, используйте this.ActualHeight и this.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)); 
+0

Добро пожаловать! –