2011-04-12 3 views
3

WPF에서 일종의 드로잉 소프트웨어를 수행하고 있는데, 예를 들어 직사각형과 선과 같은 캔버스에서 특정 시각적 요소가 있습니다. 필자는 캔버스 주위를 움직이게하기 위해 그 요소를 드래그하여 구현했습니다. 모션은 픽셀에 정렬되어야합니다. WPF는 픽셀이 아닌 점을 사용하므로 내 선이나 사각형이 픽셀에 정렬되는지 여부를 알기 쉽게 설명합니다. SnapsToPixels를 사용하여 시도했지만 트릭을 수행 할 것인지 확신 할 수 없거나 시각적으로 움직일 때 그렇게합니다.Canvas에서의 정확한 픽셀 이동

마지막으로 키보드로 움직이는 비주얼을 구현해야합니다. 단일 커서 스트로크는 시각적으로 정확히 한 픽셀을 이동시키는 것을 의미합니다. 코드 뒤에서 어떻게 할 수 있습니까? 어떻게 캔버스에 정확히 하나 개의 픽셀을 이동할 수 있습니다 만의 위치로 한 점을 추가합니다

Canvas.SetLeft(visual) = Canvas.GetLeft(visual) + 1; 

, 그리고 하나의 픽셀 : 내가 좋아하는 뭔가를하고있는 것 같은데요?

대단히 감사합니다.

답변

1

캔버스에 SnapToDevicePixels을 사용하면 도움이 될 수 있습니다.

+0

그게 도움이 될 수 있지만 코드에서 캔버스의 위치를 ​​픽셀 단위로 늘리는 방법은 무엇입니까? –

1

여기를 클릭하십시오.

Matrix m = 
    PresentationSource.FromVisual(Application.Current.MainWindow) 
     .CompositionTarget.TransformToDevice; 
double pixelSizeX = m.M11; 
double pixelSizeY = m.M22;