【问题标题】:Canvas position to image pixel画布位置到图像像素
【发布时间】:2019-03-18 12:27:23
【问题描述】:

我想在图像上绘制矩形以标记特定区域。 我看到了这个问题:Draw Rectangle over Image,它奏效了。我在图像上得到一个矩形。现在我想获得图像上的真实像素位置。我知道我通过 Canvas.Left、Canvas.Top 获得了一些数据,但 Canvas 和图像位置之间的关系在哪里?

谢谢Lyror

【问题讨论】:

  • 你实际上可以在图像上绘制,更好的是实际操作位图来实现这一点

标签: wpf image canvas pixel


【解决方案1】:

要完成这项工作,您可以轻松地将其放入如下视图框中:

<Viewbox> <!-- I will make this construct fit everywhere -->
    <Grid> <!-- I will be exactly the size of the image -->

        <Image Source="/MyImagegeWithResolutionOf1080x720p.jpg"
            Width="{Binding Source.PixelWidth, RelativeSource={RelativeSource Self}}"
            Height="{Binding Source.PixelHeight, RelativeSource={RelativeSource Self}}"
            Stretch="Fill"/>

        <Canvas> <!-- use me to draw your stuff -->
            <Rectangle Width="10" Height="10" Canvas.Bottom="360" Canvas.Left="540"/> <!-- I will be in the center -->
         </Canvas>
    </Grid>
</Viewbox>

【讨论】:

  • 只有当图像的 DPI 为 96 时,才会为您提供实际的 pixel 位置。
  • 他没有问得更具体,我认为这很可能满足他的需求。随时改进我的回复
  • 或者很可能不是,没人知道。我投票决定将该问题作为离题结束,因为它缺少准确的问题描述。
  • 我不同意,但我想这可能发生在互联网的宽度上......对我来说,(尤其是通过他提供的链接)很清楚他想要做什么并且他是没有达到他开始担心 WPF 中的像素实际上是什么的程度
  • 问题是“图像上的真实像素位置”,这让我认为 OP 很清楚这一点。如果他们从他们的图片库中加载图像以裁剪或其他任何内容,那么您的方法将不适用于没有 96 DPI 的图像。 my 图片库中的几乎所有图片都没有 96 DPI。只是说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 2013-06-07
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多