2009-11-06 6 views
2

Я разрабатываю управление графом в WPF. Мне нужно разместить Canvas поверх другого. Один Canvas содержит линии сетки, а другой Canvas рисует на нем объекты.размещение холста поверх другого в WPF?

Причина этого заключается в том, что мне нужно удалить элементы из холста объекта и перерисовать его снова, но нужно сохранить линии сетки, не удаляя их.

Так что я удаляю детей с холста объекта и время от времени переделываю. Если я использую тот же холст, когда удаляю объекты, сетки также исчезают.

Есть ли способ разместить одно холст поверх другого? Или есть другое решение для моей проблемы?

помогите пожалуйста.

приветствие, rangana.

ответ

3

Есть несколько способов сделать это. Вот один. Просто увеличьте класс Canvas и нарисуйте сетку самостоятельно в методе OnRender.

public class GridCanvas : Canvas 
{ 
    public int rows = 4; 
    public int cols = 4; 

    protected override void OnRender(System.Windows.Media.DrawingContext dc) 
    { 
     double yStep = this.ActualHeight/rows; 
     double y = yStep; 

     for (int i = 0; i < rows - 1; i++) 
     { 
      dc.DrawLine(new Pen(Brushes.Black, 1), new Point(0, y), new Point(this.ActualWidth, y)); 
      y += yStep; 
     } 

     double xStep = this.ActualWidth/cols; 
     double x = xStep; 

     for (int i = 0; i < cols - 1; i++) 
     { 
      dc.DrawLine(new Pen(Brushes.Black, 1), new Point(x, 0), new Point(x, this.ActualHeight)); 
      x += xStep; 
     } 
    } 
} 
Смежные вопросы