2009-11-06 7 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; 
     } 
    } 
} 
관련 문제