InkPresenter 仅在透明区域绘制

Posted

技术标签:

【中文标题】InkPresenter 仅在透明区域绘制【英文标题】:InkPresenter draw only in transparent area 【发布时间】:2014-10-24 05:54:33 【问题描述】:

我有一个 InkPresenter 和这个带有透明背景的图像。我希望我的笔触只在透明区域绘制,而忽略形状的黑色边框。这怎么可能?

【问题讨论】:

剪辑也许可以帮助你。你能分享一些示例代码吗? 【参考方案1】:

这里是一个使用 WPF 的例子,同样适用于 InkPresenter,你可以使用InkPresenter.Clip 属性来定义剪辑区域

<Border BorderBrush="Green"
        BorderThickness="1"
        Width="200"
        Height="200">
    <Grid>
        <InkCanvas>
            <InkCanvas.Clip>
                <EllipseGeometry  RadiusX="98"
                                  RadiusY="98"
                                  Center="100,100" />
            </InkCanvas.Clip>
        </InkCanvas>
        <Ellipse Stroke="Blue"
                 StrokeThickness="2" />
    </Grid>
</Border>

结果

【讨论】:

问题是,我希望剪辑是根据图像而不是形状来完成的。我使用 OpacityMask 解决了它。 很棒的发现!只要透明区域基于图像,不透明蒙版就非常好。当需要可缩放蒙版时,可以使用基于几何的剪辑。快乐编码:)【参考方案2】:

我能够使用不透明蒙版解决我的问题:

<InkPresenter.OpacityMask>
     <ImageBrush ImageSource="Binding ImageMask" />
</InkPresenter.OpacityMask>

【讨论】:

以上是关于InkPresenter 仅在透明区域绘制的主要内容,如果未能解决你的问题,请参考以下文章

Android Canvas:仅在透明背景上绘制圆圈

仅在特定区域的不透明度

android 画布区域,android:canvas绘制一个透明矩形并填充其余区域

QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)

cesium如何改变地图gamma某一块区域的透明度

Lollipop:在 statusBar 后面绘制,其颜色设置为透明