2009-11-06 79 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; 
     } 
    } 
} 
相关问题