我正在WPF中做某种绘图软件,我在Canvas中有一些视觉元素,例如Rectangles和Lines。我已经实现了在Canvas周围拖动这些元素来移动它们。运动必须与像素对齐,我读过WPF使用的是点,而不是像素,因此我知道线条或矩形是否与像素对齐已成为我的关注点。我尝试过使用SnapsToPixels,但是我不确定它是否能解决问题,或者当我移动视觉效果时它会这样做。
最后,我必须用键盘实现移动视觉效果,单个光标笔划意味着将视觉移动到一个像素,我怎么能从后面的代码中做到这一点?我假设做了类似的事情:
Canvas.SetLeft(visual) = Canvas.GetLeft(visual) + 1;
只会在其位置添加一个点,而不是一个像素,如何在“画布”中移动一个像素?
非常感谢你。
答案 0 :(得分:1)
将SnapToDevicePixels用于画布可能会有所帮助。
答案 1 :(得分:1)
这是你在找什么?
Matrix m =
PresentationSource.FromVisual(Application.Current.MainWindow)
.CompositionTarget.TransformToDevice;
double pixelSizeX = m.M11;
double pixelSizeY = m.M22;