【问题标题】:The GR32_VectorUtils.Circle method works different from my expectationGR32_VectorUtils.Circle 方法的工作方式与我的预期不同
【发布时间】:2019-05-30 05:54:16
【问题描述】:

我正在使用以下代码块在 TBitmap32 (x:0,y:0) 点上画一个圆。

Pts := Circle(0,0,35);

PolylineFS(Bitmap32, Pts, clBlack32, True, 3);

但是,绘制的圆是在指定坐标的后面绘制的。圆的一半在 TBitmap32 的负坐标中。

Pts := Circle(35,35,35);

当我尝试这行代码时,x坐标几乎绘制到了正确的点,但Y点仍然不在正确的坐标中。

我希望这个函数表现得像 TCanvas.Ellipse。我尝试了很多东西,但都没有成功。

【问题讨论】:

    标签: delphi graphics32


    【解决方案1】:

    代码按设计执行。您提供的坐标是圆心和半径。

    如果你提供 0 作为中心,那么圆的一半自然会有负坐标。通过传递圆心的坐标来解决您的问题。


    我希望这个函数表现得像TCanvas.Ellipse

    这不是针对第三方界面进行编程的方式。第三方库的作者决定界面,你必须遵循。在这种情况下,图书馆的作者已经下令您必须提供圆心。在这件事上你别无选择。您必须遵循库作者定义的接口。

    如果您希望以不同的方式提供坐标,则需要编写一个适配器。您可以编写自己的代码,以您希望使用的形式接受坐标,然后让该代码将您的坐标转换为库所需的坐标。

    【讨论】:

    • 由于窗口问题,结果似乎错误。 x = 35,y = 35 正确。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多