2010-06-23 123 views
1

是否有方法從圖像中繪製/擬合簡單的四邊形切出到用於屏幕顯示的標準軸對齊矩形上。 (所以切出的部分會被扭曲以填充矩形點)。對我來說,ImageBrush應該是可能的,但我不太明白。WPF圖像映射

回答

1

是的,但它取決於你的四邊形從極其容易到有點困難。

不結盟矩形

如果四邊形是與軸對齊的矩形,你可以使用CroppedBitmap。

未對齊的矩形或其它平行四邊形

如果四邊形是一個任意的平行四邊形(包括矩形),則可以使用一個的RenderTransform到quatrilateral的角映射到矩形的邊界並設置ClipToBounds =「真」所以只有切口顯示。

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

通過改變RenderTransform上的矩陣參數,任何平行四邊形都可以映射到矩形上。簡單的代數將給出細節。只需將平行四邊形的任意三角插入矩陣變換方程並求解六個變換參數即可。

任意四邊形

如果四邊形是不是平行四邊形,你需要使用非仿射變換這是不是在WPF的2D圖形可用。然而,它是在3D系統中可用:您將需要創建四個嵌套對象:

  • 一個MeshGeometry3D定義
  • GeometryModel3D內的矩形形狀來定義裏面
  • 材料(您的ImageBrush)
  • ModelVisual3D定義你的變換裏面的一個
  • Viewport3DVisual定義你的相機和視口。

Charles Petzold's blog已計算出3D解決方案。