2017-12-12 27 views
0

現在、Xamarin.Formsアプリケーションを作成しています。私のページの1つはSkiaSharpを使用して、ユーザーがテキストマーカースタイル(黄色の不透明度の低いブラシ)で画像の一部をハイライト表示できるようにします。SkiaSharpの不透明度の「追加」を避ける方法

これは、関連SKPaintオブジェクトが定義されている方法です。これまでのところ正常に動作しますが、どのような私を気にすることは、不透明度「増加」は、ときに私はいくつかの点でまで、複数の重複パスを持っているということであるということ

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

下にある画像はもう見えません。

この重複を避けるにはどうすればよいですか?私はすべてのパスを1つにマージすることを考えていましたが、ユーザーがストロークの間にStrokeWidthを変更することが許可されていて、幅の変化するパスを描画する方法が見当たらないため動作しません。

皆さんのお役に立てれば幸いです。どんなアイデアもありがとう!

+2

私はSkiaをよく知っているわけではありませんが、私は['SKPaint'](https://developer.xamarin.com/api/type/SkiaSharp.SKPaint/)のドキュメントを見ています['BlendMode'](https://developer.xamarin.com/api/property/SkiaSharp.SKPaint.BlendMode/)プロパティを持っているようです。他のシステムでどのくらい似たようなことが起きているかに基づいて、色の結合方法を制御する必要があります。あなたは、あなたが探している効果を得るために異なる値を試しなければならないかもしれません。 'Dst'、または' Modulate'は良い候補のように見えます。 –

答えて

1

私はSkiaに精通していませんが、SKPaintのドキュメントを見て、BlendModeプロパティがあるように見えます。他のシステムでどのくらい似たようなことが起きているかに基づいて、色の結合方法を制御する必要があります。あなたは、あなたが探している効果を得るために異なる値を試しなければならないかもしれません。 Dst、Modulateは良い候補のように見えます。 - Bradley Uffner

あなたの答えBradley! Darkenブレンドモードを使用し、不透明度を255に設定したので、テキストを強調表示するときに非常に効果があります(暗い色のみが表示されるので、明るい背景の暗いテキストはマーカー色の背景に暗いテキストになります)。

関連する問題