0
Canvas에서 상속 받고 canvasbase에 Visual을 추가 할 수있는 클래스를 작성해야합니다. Canvas에 VisualChild를 추가해도 작동하지 않음 - 표시되지 않음
그래서이 코드 작성 :class TestCanvas : Canvas
{
VisualCollection visuals;
public TestCanvas()
{
visuals = new VisualCollection(this);
}
protected override void OnMouseDown(MouseButtonEventArgs e)
{
Rectangle rect = new Rectangle
{
Width = 200,
Height = 200,
Stroke = Brushes.Red,
StrokeThickness = 5,
Fill = Brushes.Black
};
visuals.Add(rect);
base.OnMouseDown(e);
}
protected override int VisualChildrenCount
{
get
{
return visuals.Count;
}
}
protected override Visual GetVisualChild(int index)
{
if (index < 0 || index > visuals.Count)
throw new ArgumentOutOfRangeException("index");
return visuals[index];
}
}
을하지만 그것을 클릭하고 내가 표시되지 않는이 Rectangle를 추가합니다. 누구도 이것이 작동하지 않는 이유를 알고 있습니까? 당신이 프로그래밍 방식으로 파생 캔버스에 아이를 추가하려면
hmmm ok 더 이상 질문이있을 경우 다시 질문 할 것입니다 ... 아프지 말고 시도하십시오 –
문제는 시각적 레이어로 이동해야합니다. 그리고 저는 캔버스가 필요합니다. 제 영어는 당신을 아주 잘 설명하는만큼 좋지 않습니다. 그러나 어떤 종류의 그리기 도구를 만들 계획입니다. 이 아이디어를 기반으로합니다 : http://www.codeproject.com/Articles/22776/WPF-DrawTools 여기에는 또한 컨테이너 및 시각적 컬렉션으로 Canvas 기본 클래스가 사용됩니다. 그리고 이것은 꽤 예쁜 방법이라고 생각합니다. –
당신이 말하는 프로젝트를 들여다 보지 않았습니다. 그러나 여기서 개념을 혼합하고 있습니다. 반드시 [ContainerVisual] (http://msdn.microsoft.com/en-us/library/system.windows.media.containervisual.aspx) children ** 또는 ** [Panel] (http : // msdn .microsoft.com/en-us/library/ystem.windows.controls.panel.aspx) (예 : Canvas) 자식 둘 다 사용할 수 없습니다. – Clemens