首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置TDirect2DCanvas.Pen.StrokeStyle?

如何设置TDirect2DCanvas.Pen.StrokeStyle?
EN

Stack Overflow用户
提问于 2021-03-05 05:48:29
回答 1查看 107关注 0票数 2

我一直在尝试修改StrokeStyle中的TDirect2DCanvas.Pen in C++Builder。

文档说这个属性是这样的:

确定笔画线条的笔画样式。 使用StrokeStyle指定绘制线条的更复杂的样式。StrokeStyle接受提供一组方法的接口,每个方法都返回一个特定的绘图选项。

文档没有给出任何例子。当我试图将这个属性设置为任何东西时,我会收到一个编译错误,它说“不能写入没有写说明符的属性”(看起来这个属性只用于读取StrokeStyle;尽管文档似乎表明了相反的情况)。

在这里,我的愿望是让行呈现为圆角,而不是使用TDirect2DCanvas时默认的平底。有人知道如何做到这一点吗?

我使用的是C++Builder 10.2和clang编译器。我尝试使用TDirect2DCanvas而不是普通的TCanvas,因为它可以绘制反别名线。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-05 17:59:44

这些文件有误导性。TDirect2DPen::StrokeStyle属性实际上是只读的,因为它表示由TDirect2DPen在内部创建的当前Direct2D ID2D1StrokeStyle对象。TDirect2DPen不提供任何方法来自定义除其dashStyle之外的任何笔画设置。

影响TDirect2DPen::StrokeStyle的唯一方法是设置TDirect2DPen::Style属性。设置Style将释放当前的ID2D1StrokeStyle,然后如果Style设置为psSolidpsClearpsInsideFrame以外的值,则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。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66487464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档