你如何设置TDirect2DCanvas.Pen.StrokeStyle?
How do you set the TDirect2DCanvas.Pen.StrokeStyle?
我一直在尝试为 C++Builder 中的 TDirect2DCanvas.Pen
修改 StrokeStyle
。
documentation 关于 属性 的说法:
Determines the stroke style in which the pen draws lines.
Use StrokeStyle to specify a more complex style in which the lines are drawn. StrokeStyle accepts an interface that provides a set of methods, each returning a certain drawing option.
文档中没有给出示例。当我尝试将此 属性 设置为任何值时,出现编译错误“无法写入没有写入说明符的 属性”(看起来 属性 仅设置为阅读 StrokeStyle;即使文档似乎另有说明)。
我在这里的愿望是让线条呈现为圆形末端,而不是使用 TDirect2DCanvas
时似乎默认的扁平末端。有人知道如何实现吗?
我正在使用 C++Builder 10.2 和 clang 编译器。我正在尝试使用 TDirect2DCanvas
而不是常规的 TCanvas
因为它可以绘制抗锯齿线。
文档具有误导性。 TDirect2DPen::StrokeStyle
property is indeed read-only, as it represents the current Direct2D ID2D1StrokeStyle
对象,由 TDirect2DPen
内部创建。 TDirect2DPen
不提供 任何 自定义任何笔画设置的方式 除了 它的 dashStyle
.
影响 TDirect2DPen::StrokeStyle
的唯一方法是设置 TDirect2DPen::Style
property. Setting the Style
will release the current ID2D1StrokeStyle
, and then if the Style
is set to a value other than psSolid
, psClear
, or psInsideFrame
then TDirect2DPen
will call ID2D1Factory::CreateStrokeStyle()
以创建新的 ID2D1StrokeStyle
,并为其指定以下属性:
- startCap = D2D1_CAP_STYLE_FLAT
- endCap = D2D1_CAP_STYLE_FLAT
- dashCap = D2D1_CAP_STYLE_ROUND
- lineJoin = D2D1_LINE_JOIN_ROUND
- miterLimit = 10
- dashStyle = 以下之一,取决于
TDirect2DPen.Style
:
- D2D1_DASH_STYLE_DASH
- D2D1_DASH_STYLE_DOT
- D2D1_DASH_STYLE_DASH_DOT
- D2D1_DASH_STYLE_DASH_DOT_DOT
- dashOffset = 0
- 破折号 = 无
- 破折号 = 0
此行为是硬编码的,无法更改。
所以,如果你想更多地控制 StrokeStyle
,你根本不能使用 TDirect2DCanvas
。您将不得不直接使用 Direct2D API。
我一直在尝试为 C++Builder 中的 TDirect2DCanvas.Pen
修改 StrokeStyle
。
documentation 关于 属性 的说法:
Determines the stroke style in which the pen draws lines.
Use StrokeStyle to specify a more complex style in which the lines are drawn. StrokeStyle accepts an interface that provides a set of methods, each returning a certain drawing option.
文档中没有给出示例。当我尝试将此 属性 设置为任何值时,出现编译错误“无法写入没有写入说明符的 属性”(看起来 属性 仅设置为阅读 StrokeStyle;即使文档似乎另有说明)。
我在这里的愿望是让线条呈现为圆形末端,而不是使用 TDirect2DCanvas
时似乎默认的扁平末端。有人知道如何实现吗?
我正在使用 C++Builder 10.2 和 clang 编译器。我正在尝试使用 TDirect2DCanvas
而不是常规的 TCanvas
因为它可以绘制抗锯齿线。
文档具有误导性。 TDirect2DPen::StrokeStyle
property is indeed read-only, as it represents the current Direct2D ID2D1StrokeStyle
对象,由 TDirect2DPen
内部创建。 TDirect2DPen
不提供 任何 自定义任何笔画设置的方式 除了 它的 dashStyle
.
影响 TDirect2DPen::StrokeStyle
的唯一方法是设置 TDirect2DPen::Style
property. Setting the Style
will release the current ID2D1StrokeStyle
, and then if the Style
is set to a value other than psSolid
, psClear
, or psInsideFrame
then TDirect2DPen
will call ID2D1Factory::CreateStrokeStyle()
以创建新的 ID2D1StrokeStyle
,并为其指定以下属性:
- startCap = D2D1_CAP_STYLE_FLAT
- endCap = D2D1_CAP_STYLE_FLAT
- dashCap = D2D1_CAP_STYLE_ROUND
- lineJoin = D2D1_LINE_JOIN_ROUND
- miterLimit = 10
- dashStyle = 以下之一,取决于
TDirect2DPen.Style
:- D2D1_DASH_STYLE_DASH
- D2D1_DASH_STYLE_DOT
- D2D1_DASH_STYLE_DASH_DOT
- D2D1_DASH_STYLE_DASH_DOT_DOT
- dashOffset = 0
- 破折号 = 无
- 破折号 = 0
此行为是硬编码的,无法更改。
所以,如果你想更多地控制 StrokeStyle
,你根本不能使用 TDirect2DCanvas
。您将不得不直接使用 Direct2D API。