gpt4 book ai didi

c++builder - 你如何设置 TDirect2DCanvas.Pen.StrokeStyle?

转载 作者:行者123 更新时间:2023-12-04 08:00:42 24 4
gpt4 key购买 nike

我一直在尝试修改 StrokeStyleTDirect2DCanvas.Pen在 C++Builder 中。
documentation说这个关于属性(property):

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 属性确实是只读的,因为它代表当前的 Direct2D ID2D1StrokeStyle 对象,由 TDirect2DPen 在内部创建. TDirect2DPen除了 dashStyle 之外,不提供任何自定义任何笔画设置的方法。 .
影响TDirect2DPen::StrokeStyle的唯一途径是设置 TDirect2DPen::Style 属性(property)。设置 Style将发布当前ID2D1StrokeStyle ,然后如果 Style设置为 psSolid 以外的值, psClear , 或 psInsideFrame然后 TDirect2DPen将调用 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
  • 破折号 = 零
  • dashesCount = 0

  • 此行为是硬编码的,无法更改。
    所以,如果你想更多地控制 StrokeStyle ,您不能使用 TDirect2DCanvas根本。您将不得不直接使用 Direct2D API。

    关于c++builder - 你如何设置 TDirect2DCanvas.Pen.StrokeStyle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66487464/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com