更改笔刷的 InkDrawingAttributes 不透明度

问题描述 投票:0回答:2

我使用颜色选择器用笔绘图,但使用此代码我无法更改笔颜色的不透明度:

InkDrawingAttributes inkDrawingAttributes = InkCanvas.InkPresenter.CopyDefaultDrawingAttributes(); inkDrawingAttributes.Color = ColorPenSelected; InkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(inkDrawingAttributes);

这种方式适用于钢笔:

但是,使用 InkCanvas.InkPresenter.CopyDefaultDrawingAttributes() 时,inkDrawingAttributes.PencilProperties 为空,我无法更改不透明度。不允许更改不透明度。

我可以用这段代码改变不透明度:

InkDrawingAttributes inkDrawingAttributes = InkDrawingAttributes.CreateForPencil(); inkDrawingAttributes.Color = ColorPenSelected; inkDrawingAttributes.PencilProperties.Opacity = (double)ColorPenSelected.A * 5 / 255; InkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(inkDrawingAttributes);

在 CreateForPencil() 中用作铅笔。

现在,我可以更改不透明度。然而,与第一张图像相比,画笔纹理不同,即使使用 100% 的不透明度。线上有很多点,而不是一条独特的线:

那么,如何更改笔刷的不透明度并保持与第一张图像相同的纹理?有一条连续的线,没有第二张图片中的点。

c# uwp styles opacity
2个回答
1
投票

我最初认为您可以将

inkDrawingAttributes.Color
设置为ARGB值,但由于以下原因这是不可能的。

取自learn.microsoft.com

Color的值是一个ARGB值。然而,价值的 透明度分量(A 或 alpha 通道)将被忽略,并且 InkStroke 呈现为完全不透明。

恐怕这似乎是不可能的。之后您也许可以将笔划渲染为半透明 - 但似乎您无法设置笔的不透明度。


0
投票

与团队交谈后,我不得不说这种行为是意料之中的。默认笔的 InkStroke 将始终呈现为完全不透明。 InkDrawingAttributes.Color 属性接受 ARGB 值,但忽略透明度组件(A 或 alpha 通道)的值。

因此您无法更改默认笔刷的 InkDrawingAttributes 的不透明度。

© www.soinside.com 2019 - 2024. All rights reserved.