2009-03-04 6 views
3

캔버스 (특정 너비)의 너비를 픽셀 단위로 결정하려면 어떻게합니까?WPF - 캔버스 높이 (픽셀 단위)

AnimatedImage 컨트롤에 비트 맵이 있고 비트 맵의 ​​너비를 픽셀 단위로 알고 비트 맵을 수평으로 정확하게 맞춰야합니다. 이 규모를 어떻게 결정할 수 있습니까?

참고 : 비트 맵이 이미로드되어 있으므로 RenderTargetBitmap을 사용할 필요가 없습니다.

답변

13

WPF 단위는 장치에 독립적입니다. 단위의 실제 픽셀 크기를 계산하는 수식은 다음과 같습니다.

픽셀 당 WPF 단위 = ConstantWPFUnit 크기 * 모니터 DPI; WPF 단위당 픽셀 = 화소에 소자

크기 * MyElement.ActualWidth

상수 WPF 단위 크기는 1/96이다. 올바르게 기억한다면 모니터 DPI는 SystemInformation.GetPrimaryMonitor 또는 유사한 것으로부터 반환 된 클래스의 속성으로 발견 될 수 있습니다.

FrameworkElement의 ActualWidth는 장치 독립적 단위이며 레이아웃이 수행 된 후에 요소가 실제로 차지하는 너비입니다. 위에서 계산 한 WPF 단위당 픽셀로이 속성을 단순히 곱하면 답을 얻을 수 있습니다.

나는 많은 수동 코딩에 대한 의혹을 가지고 있습니다. 원하는 방식으로 이미지와 다른 시각적 요소를 늘리는 것은 일반적으로 해당 컨트롤/브러시의 속성을 설정하여 간단히 수행 할 수 있습니다. 비트 맵을 포함하는 요소에 대해 HorizontalAlignment = "Stretch"및 VerticalAlignment = "Center"를 시도 했습니까?

+0

당신이 옳았습니다. 문제를 해결하고있었습니다. 수직 + 수평 정렬이 트릭을했습니다! 고마워요! – melculetz