2011-04-12 38 views
3

我正在做一些WPF中的繪畫軟件,並且我在畫布中有特定的視覺元素,例如矩形和線條。我已經實現了拖拽Canvas周圍的這些元素來移動它們。運動必須與像素對齊,我讀WPF使用點而不是像素,因此知道我的線條或矩形是否與像素對齊已成爲我的一個擔憂。我嘗試使用SnapsToPixels,但我不確定它會做什麼,或者當我移動視覺效果時它會這樣做。畫布中的精確像素移動

最後,我必須用鍵盤實現移動視覺效果,單個光標筆畫意味着將視覺移動一個像素,我怎麼能從背後的代碼中做到這一點?我認爲做這樣的事情:

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

將只有一個點添加到它的位置,而不是一個像素,我怎麼能在畫布上移動只有一個像素?

非常感謝。

回答

1

它可能有助於使用SnapToDevicePixels您的畫布。

+0

這可能會有幫助,但如何增加畫布中像素的位置? – 2011-04-12 18:31:53

1

這是你在找什麼?

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