我一直在尝试修改StrokeStyle中的TDirect2DCanvas.Pen in C++Builder。
文档说这个属性是这样的:
确定笔画线条的笔画样式。 使用StrokeStyle指定绘制线条的更复杂的样式。StrokeStyle接受提供一组方法的接口,每个方法都返回一个特定的绘图选项。
文档没有给出任何例子。当我试图将这个属性设置为任何东西时,我会收到一个编译错误,它说“不能写入没有写说明符的属性”(看起来这个属性只用于读取StrokeStyle;尽管文档似乎表明了相反的情况)。
在这里,我的愿望是让行呈现为圆角,而不是使用TDirect2DCanvas时默认的平底。有人知道如何做到这一点吗?
我使用的是C++Builder 10.2和clang编译器。我尝试使用TDirect2DCanvas而不是普通的TCanvas,因为它可以绘制反别名线。
发布于 2021-03-05 17:59:44
这些文件有误导性。TDirect2DPen::StrokeStyle属性实际上是只读的,因为它表示由TDirect2DPen在内部创建的当前Direct2D ID2D1StrokeStyle对象。TDirect2DPen不提供任何方法来自定义除其dashStyle之外的任何笔画设置。
影响TDirect2DPen::StrokeStyle的唯一方法是设置TDirect2DPen::Style属性。设置Style将释放当前的ID2D1StrokeStyle,然后如果Style设置为psSolid、psClear或psInsideFrame以外的值,则TDirect2DPen将调用ID2D1Factory::CreateStrokeStyle()来创建新的ID2D1StrokeStyle,并为此指定以下属性:
TDirect2DPen.Style:此行为是硬编码的,不能更改。
因此,如果您希望对StrokeStyle有更多的控制,则根本不能使用TDirect2DCanvas。您必须直接使用Direct2D API。
https://stackoverflow.com/questions/66487464
复制相似问题