0

我目前正在创建一个 Xamarin.Forms 应用程序。我的一个页面使用 SkiaSharp 允许用户以文本标记样式(即不透明度低的黄色画笔)突出显示图像的某些部分。

这是相关的 SKPaint 对象的定义方式:

var strokePaint = new SKPaint()
{
    Color = Color.FromRgba(255, 255, 0, 100).ToSKColor(),
    Style = SKPaintStyle.Stroke,
    StrokeWidth = StrokeWidth
};

到目前为止一切正常,但令我困扰的是,当我有多个重叠路径时,不透明度会“增加”,直到某个时候底层图片不再可见。

我能做些什么来避免这种重叠?我正在考虑将所有路径合并为一个,但这似乎不起作用,因为允许用户在笔划之间更改 StrokeWidth,而且我没有看到任何绘制宽度不同的路径的方法。

我希望你们中的任何人对我有一些帮助。任何想法表示赞赏!

4

1 回答 1

1

我对 Skia 不是很熟悉,但我查看了 SKPaint 的文档,看起来它有一个 BlendMode 属性。根据类似事物在其他系统中的工作方式,应该控制颜色的组合方式。您可能必须尝试不同的值才能获得所需的效果。Dst 或 Modulate 看起来不错。——布拉德利·乌夫纳

感谢您的回答布拉德利!我使用Darken混合模式并将不透明度设置为 255,这在突出显示文本时会产生非常好的效果(只有较暗的颜色可见,因此浅色背景上的深色文本会变成我标记颜色背景上的深色文本)。

于 2017-12-14T06:46:43.193 回答