Canvas中的精确像素移动

时间:2011-04-12 14:25:33

标签: c# .net wpf

我正在WPF中做某种绘图软件,我在Canvas中有一些视觉元素,例如Rectangles和Lines。我已经实现了在Canvas周围拖动这些元素来移动它们。运动必须与像素对齐,我读过WPF使用的是点,而不是像素,因此我知道线条或矩形是否与像素对齐已成为我的关注点。我尝试过使用SnapsToPixels,但是我不确定它是否能解决问题,或者当我移动视觉效果时它会这样做。

最后,我必须用键盘实现移动视觉效果,单个光标笔划意味着将视觉移动到一个像素,我怎么能从后面的代码中做到这一点?我假设做了类似的事情:

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

只会在其位置添加一个点,而不是一个像素,如何在“画布”中移动一个像素?

非常感谢你。

2 个答案:

答案 0 :(得分:1)

SnapToDevicePixels用于画布可能会有所帮助。

答案 1 :(得分:1)

这是你在找什么?

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