문제

나는 과거에 연결되었습니다 이것 WPF 픽셀 좌표를 데스크탑으로 변환하는 것에 대한 유사한 질문에 대한 응답이지만 관련된 수학을 이해하는 것은 확실하지 않습니다.

Astonish 'Answer는 "WPF 단위당 픽셀 = ConstantWpFunit 크기 * 모니터 DPI;"라고 말합니다. 그리고 "일정한 WPF 단위 크기는 1/96입니다."

제 경우에는 데스크탑의 스크린 샷을 찍은 후 만든 비트 맵 객체 (Astonish가 말한 속성을 찾을 수 없었기 때문에)에서 생성 된 그래픽 객체에서 DPI를 가져 왔습니다.

Graphics g = Graphics.FromImage(bitmap);
float WpfUnit = (1 / 96) * g.DpiX;

그래픽 객체에서 반환되는 DPI가 96이라는 점을 감안할 때

WpfUnit = (1 / 96) * 96 = 1

그러나 WPFUnit은 알려지지 않은 (나에게) 이유가 0으로 나옵니다. 이것을 고칠 수있는 유일한 방법은

if(WpfUnit == 0) WpfUnit = 1;

그리고 링크 된 답변에 제안 된대로 WPFUnit을 곱할 때 높이 값과 상단 값이 1을 곱하는 것 외에는 아무것도하지 않았기 때문에 문제를 해결하지 못합니다.

결론적으로, 나는 여전히 WPF 픽셀을 데스크탑 픽셀로 변환하는 데 여전히 갇혀 있습니다. 이에 대한 도움은 크게 감사하겠습니다.

도움이 되었습니까?

해결책

내장은 어떻습니까 PointToscreen 그리고 PointFromscreen 행동 양식? 아니면 내가 뭔가를 놓치고 있습니까?

다른 팁

WPFUnit은 1/96으로 정수 수학을하고 있기 때문에 0으로 나옵니다. 그 숫자를 플로트로 명시 적으로 선언하십시오.

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