繁体   English   中英

更改笔刷的 InkDrawingAttributes 不透明度

[英]Change InkDrawingAttributes Opacity for Pen brush

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

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

这种方式适用于钢笔: 在此处输入图像描述

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

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

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

在 CreateForPencil() 中用作铅笔。

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

在此处输入图像描述

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

我最初认为您可以将inkDrawingAttributes.Color设置为 ARGB 值,但由于以下原因这是不可能的。

取自learn.microsoft.com

Color 的值是一个 ARGB 值。 但是,透明度组件(A 或 alpha 通道)的值将被忽略,InkStroke 将以完全不透明的方式呈现。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM