【问题标题】:Precise pixel movement in CanvasCanvas 中的精确像素移动
【发布时间】:2011-04-13 12:50:32
【问题描述】:

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

最后,我必须用键盘实现移动视觉效果,单个光标笔划意味着将视觉效果精确移动一个像素,我该如何从后面的代码中做到这一点?我假设这样做:

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

只会在其位置上添加一个点,而不是一个像素,我怎样才能在 Canvas 中精确移动一个像素?

非常感谢。

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

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

    【讨论】:

    • 这可能会有所帮助,但是如何从代码中以像素为单位增加 Canvas 中的位置?
    【解决方案2】:

    这是你要找的吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多