1

有没有办法从图像中绘制/拟合一个简单的四边形切口到一个标准的轴对齐矩形以进行屏幕显示。(这样切口将被扭曲以填充矩形点)。在我看来,使用 ImageBrush 应该是可能的,但我看不到它。

4

2 回答 2

1

是的,但根据您的四边形,它的范围从非常容易到有些困难。

对齐的矩形

如果四边形是与轴对齐的矩形,则可以使用 CroppedBitmap。

未对齐的矩形或其他平行四边形

如果四边形是任意平行四边形(包括矩形),您可以使用 RenderTransform 将四边形的角映射到矩形的边界并设置 ClipToBounds="True" 以便仅显示切口。

<Decorator ClipToBounds="true">
  <Rectangle Fill="{StaticResource SourceImage}" RenderTransform="1 0 0 1 0 0" />
</Decorator>

通过改变 RenderTransform 上的矩阵参数,任何平行四边形都可以映射到矩形上。简单的代数会给出细节。只需将平行四边形的任意三个角代入矩阵变换方程并求解六个变换参数即可。

任意四边形

如果四边形不是平行四边形,则需要使用 WPF 的 2D 图形中不可用的非仿射变换。但是它在 3D 系统中可用:您将需要创建四个嵌套对象:

  • 一个 MeshGeometry3D 来定义一个矩形内的形状
  • GeometryModel3D 在 a 中定义材质(您的 ImageBrush)
  • ModelVisual3D 在 a 中定义您的变换
  • Viewport3DVisual 来定义你的相机和视口。

Charles Petzold 的博客包含 3D 解决方案的计算。

于 2010-06-23T08:52:14.033 回答
0

如果您的意思是要显示裁剪后的图像,可以使用CroppedBitmap.

于 2010-06-23T08:21:38.030 回答