2

假设我有一个 BitmapSource(实际上,如果需要,我也可以访问原始像素),我如何使用 PathGeometry 作为遮罩来剪切图像的某些部分?

   01234567890123456789
 0 --------------------
 1 |   +     +        |
 2 |      *           |
 3 |          *    )  |
 4 |    *             |
 5 |            (     |
 6 --------------------

假设我有一个描述从 (0, 0) 到 (8, 3) 的矩形的 PathGeometry,我希望能够获得以下两个图像之一:

   01234567890123456789
 0 --------------------
 1 |   +              |
 2 |      *           |
 3 |                  |
 4 |                  |
 5 |                  |
 6 --------------------

或者

   012345678
 0 ---------
 1 |   +   |
 2 |      *|
 3 ---------
4

2 回答 2

2

好的,所以我的例子应该可以工作。根据您的情况,它可能不是性能最高的,但它会是一个起点。

它看起来像这样。显然,剪辑中的点会因您的情况而有所不同,但您明白了。

<Image Source="SomeImage.jpg">
            <Image.Clip>
                <PathGeometry>
                    <PathFigure StartPoint="0,0"
                                IsClosed="True">
                        <LineSegment Point="25,0" />
                        <LineSegment Point="25,25" />
                        <LineSegment Point="0,25" />
                    </PathFigure>
                </PathGeometry>
            </Image.Clip>
        </Image>
于 2010-04-10T21:24:59.877 回答
0

不确定您所说的“切掉”某些部分是什么意思。这可能意味着您只需要显示图像的区域,或者您需要实际创建一个仅包含剪切部分或其他内容的新图像?

我的第一个想法是最简单的解决方案,只需将 BitmapImage 设置为 Image 元素的源,然后将 Image.Clip 属性设置为包含所需区域的路径几何图形。

这将剪辑图像,以便仅显示您想要的区域,并且剪辑路径几何之外的任何内容都将被“剪辑”

您可以这样做来剪辑图像的任意部分。

那是你要找的吗?

于 2010-04-10T18:16:42.827 回答