如何剪辑图像(UI 元素)以采样几何?

Posted

技术标签:

【中文标题】如何剪辑图像(UI 元素)以采样几何?【英文标题】:How to clip Image (UI-element) to sample geometry? 【发布时间】:2017-07-12 01:26:33 【问题描述】:

例如,我希望剪辑图像为椭圆。 UI-element 有 Clip,但 Windows Runtime API 中的 Clip 必须是 RectangleGeometry。我可以使用 Ellipse 和 ImageBrush 元素作为填充画笔来获得相同的结果:

How to clip image to ellipse in XAML

但是我无法调整或移动我的图像,因为它是画笔,而不是 UI 元素。那么,如何剪辑图像而不是矩形几何?例如,我想要这个:Move image into ellipse

也许,我可以将 alphamask 用于 UI 元素?还是不透明面膜?也许这可以用win2d?

【问题讨论】:

【参考方案1】:

您应该能够在Path 内使用GeometryGroup 绘制形状,并使用该形状为图像创建蒙版。形状可以用RectangleGeometryEllipseGeometry合成,形状应该和图片一样大小(注意形状的大小是和图片本身设置的一样,不是图片控件,因为图片控件可能有空白以适应图像的比例)。填充路径然后将让Ellipse部分显示图像。

例如代码如下:

<Grid>
   <Image Source="Assets/caffe1.jpg"  Height="200" Canvas.ZIndex="-1" Width="265">
   </Image>
   <Path Fill="White" Height="200"  Width="265">
       <Path.Data>
           <GeometryGroup>
               <EllipseGeometry Center="100,100" RadiusX="100" RadiusY="100"/>
               <RectangleGeometry Rect="0,0 265,200" ></RectangleGeometry>
           </GeometryGroup>
       </Path.Data>
   </Path>
</Grid>

结果:

这种方式可以让您将图像剪辑定义为您想要的任意形状,图像大小和剪辑大小也是您想要的。有关如何绘制形状的更多详细信息,请参考this article。

【讨论】:

以上是关于如何剪辑图像(UI 元素)以采样几何?的主要内容,如果未能解决你的问题,请参考以下文章

音频合并,剪切,降采样,时长等处理

重新采样表示图像的 numpy 数组

在python中从PDF中提取图像而不重新采样?

图像下采样性能

PCL 滤波采样——体素采样

PCL 滤波采样——体素采样