我使用颜色选择器用笔绘图,但使用此代码我无法更改笔颜色的不透明度:
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% 的不透明度。线上有很多点,而不是一条独特的线:
那么,如何更改笔刷的不透明度并保持与第一张图像相同的纹理?有一条连续的线,没有第二张图片中的点。
我最初认为您可以将
inkDrawingAttributes.Color
设置为ARGB值,但由于以下原因这是不可能的。
Color的值是一个ARGB值。然而,价值的 透明度分量(A 或 alpha 通道)将被忽略,并且 InkStroke 呈现为完全不透明。
恐怕这似乎是不可能的。之后您也许可以将笔划渲染为半透明 - 但似乎您无法设置笔的不透明度。
与团队交谈后,我不得不说这种行为是意料之中的。默认笔的 InkStroke 将始终呈现为完全不透明。 InkDrawingAttributes.Color 属性接受 ARGB 值,但忽略透明度组件(A 或 alpha 通道)的值。
因此您无法更改默认笔刷的 InkDrawingAttributes 的不透明度。