문제

구현해야합니다 Canvas 크기에 따라 내용물을 조정합니다. 나는 있다는 것을 알고있다 Viewbox, 그것은 그것의 내부의 모든 것을 조정합니다. 그러나 일부 요소는 고정 된 크기가 있고 스케일링 할 수 없기 때문에 사용할 수 없습니다.

또한 크기를 어떻게 바인딩 할 수 있습니까? Canvas 상위 요소 (예 : 저지 가능한 창)에. Windows 용 Sizetocontent가 있습니다. 크기가 다른 방식으로 정확하게 맞는 것을 원합니다. 또한 캔버스는 호스팅 요소의 크기를 기준으로 일부 도면을 사용합니다. RedRaw는 어떻게 트리거되고 유효한 (또는 최소) 크기를 얻는 경우에만 그릴 수 있습니까?

도움이 되었습니까?

해결책

캔버스에 너비 나 높이를 지정하지 않으면 사용 가능한 모든 공간을 자동으로 사용합니다. 기본값이기 때문입니다 VerticalAlignment 그리고 HorizontalAlignment 설정됩니다 Stretch.

캔버스는 일부 내용물을 고정 크기로 확장하지 않고 크기에 따라 내용물을 조정한다는 의미는 무엇입니까?

댓글 후 업데이트

드로잉 알고리즘이 이미 캔버스 높이와 너비로 컨텐츠를 조정하는 경우 캔버스를 내가 믿는 영역에 맞게 크기를 조정하는 것입니다. 이 경우 하드 코드 높이/너비 값을 제거하면 캔버스가 컨테이너에 맞게 크기를 조정합니다.

그래도 드로잉 알고리즘에서 높이/너비 대신 실제 상상/실제 폭을 사용해야 할 수도 있습니다. 실제 상하/실제 폭은 레이아웃 컨테이너가 캔버스를 제공하는 값을 반환하므로 캔버스가 그려진 값을 나타냅니다.

다른 팁

내 모든 질문에 대한 답을 찾을 수 있다고 생각합니다. 런던 지하 데모.

메모리 에서이 작업을 수행하지만 창이 올바르게 리콜되는 경우 창이 패널이나 캔버스를 ContronTemplate (ContentPresenter에 위치)의 일부로 사용합니다. 이는 창에 직접 배치 된 캔버스가 자동으로 해제되는 문제가 있음을 의미합니다. 다른 곳에서처럼. 이를 해결하는 몇 가지 기본 방법이 있습니다.

1 창을 사용할 수 있도록 새 ControlTemplate을 작성하십시오. :(
2 창의 캔버스가 아닌 창에 직접 콘텐츠를 배치하십시오. :/
3 이름의 바인딩을 수행합니다. :)

<MyWindow x:Name="topWindow">
    <Canvas x:Name="topCanvas" Width="{Binding ElementName=topWindow, Path=ActualWidth}" Height="{Binding ElementName=topWindow, Path=ActualHeight}">
        ...Content...
    </Canvas>
</MyWindow>

(이런 일이 발생하면, 나는 종종이 방식으로 캔버스 내부의 그리드를 바인딩하므로 한 그리드 위치에서 다른 그리드 위치로 이동하는 항목을 쉽게 애니메이션 할 수 있습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top