2014-07-16 2 views
0

FrameworkElement에서 파생 된 일련의 사용자 정의 컨트롤이 있습니다. 각 호스트는 하나 이상의 DrawingVisual을 호스팅합니다. 이러한 그림 비주얼은 텍스트, 그래픽, 진행 미터 등을 나타낼 수 있으며 다양한 HMI 디바이스의 상태를 표시하는 데 사용됩니다.WPF Canvas 및 DrawingVisuals가 사라짐

그리드에서 모양새가 잘 작동합니다. 이미지는 렌더링되고 텍스트와 배경은 잘 나타나고 종속성 속성은 설정할 수 있습니다. 그러나 Canvas에 캡슐화하면 레이블을 나타내는 그림 비주얼을 제외하고 모두 사라집니다. 이러한 경우에도 DrawingContext.DrawText로 렌더링 된 텍스트 만 표시됩니다. dc.DrawImage, cd.DrawRectangle 등의 작업은 나타나지 않습니다.

누군가가이 문제의 원인을 밝힐 수 있습니까?

감사합니다.

+0

MSDN에 캔버스에 대한 자세한 내용을보실 수 있습니다 당신은 제대로 컨트롤을 배치하고 있는가? 그리드에서 각 항목마다 여백이 있습니다. 캔버스에서와 같이 각 요소에 대해 Canvas.Top 및 Canvas.Left를 설정해야합니다. 그 물건들이 뭔가 밑에 숨겨져있는 것이 아닌가? 컨트롤이 실제로 Canvas 자식의 일부이거나 전혀 추가되지 않은 경우 사용하려면 snoop을 사용해보십시오. – Krishna

+1

그게 전부입니다. 서로 상대적인 절대 위치를 유지하려면 컨트롤이 필요합니다. 그렇지 않으면 파이프/밸브/장치가 정렬되지 않습니다. 나는 Canvas의 포지셔닝 속성을 알지 못했습니다. 답변으로 의견을 말하면 동의합니다. –

+0

완료. 왜이 질문에 대한 downvote있어. 나는 단지 upvote하고 0으로 되돌려 놓을 것이다. – Krishna

답변

1

컨트롤을 올바르게 배치하고 있습니까? 그리드에서 각 항목마다 여백이 있습니다. 캔버스에서와 같이 각 요소에 대해 Canvas.Top 및 Canvas.Left를 설정해야합니다. 그 물건들이 뭔가 밑에 숨겨져있는 것이 아닌가? 컨트롤이 실제로 Canvas 자식의 일부이거나 전혀 추가되지 않은 경우 사용하려면 snoop을 사용해보십시오.

당신은