如何避免在SkiaSharp中"adding up"不透明度



我当前正在创建xamarin.forms应用程序。我的一个页面使用skiasharp允许用户以文本标记样式突出显示图像的一部分(即低不透明度的黄色刷子)。

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

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

到目前为止的工作正常,但是令我困扰的是,当我有多个重叠的路径时,不透明度会"增加",直到某个时候,基础图片不再可见。

我该怎么做才能避免这种重叠?我正在考虑将所有路径合并为一条路径,但这似乎不起作用,因为允许用户在中风之间更改strokewidth,而我看不出任何宽度不同的方法。

我希望你们中的任何一个对我有帮助。任何想法都将被赞赏!

我对Skia并不非常熟悉,但是我看了Skpaint的文档,看起来它具有BlendMode属性。基于类似事物在其他系统中的工作方式,应该控制颜色的组合方式。您可能必须尝试不同的值才能获得所需的效果。DST或调制看起来像是好候选人。 - Bradley Uffner

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

相关内容

  • 没有找到相关文章

最新更新