gpt4 book ai didi

c++ - 如何通过InDesign/Illustrator路径点绘制曲线?

转载 作者:行者123 更新时间:2023-11-30 02:01:14 24 4
gpt4 key购买 nike

以下数字是 Adobe InDesign 中一条非常简单的曲线的路径点:

pathPoint0 = app.selection[0].paths[0].pathPoints[0]  // PointType: SMOOTH
pathPoint1 = app.selection[0].paths[0].pathPoints[1] // PointType: PLAIN

pathPoint0.leftDirection : {x=87.32570997045623, y=30.81406367905744}
pathPoint0.anchor : {x=67.69218412206757, y=134.53280706833522}
pathPoint0.rightDirection : {x=48.0586582736789, y=238.25155045761298}

pathPoint1.anchor : {117.05865827421783, 143.2515504576449}

曲线包含 2 个路径点,一个平滑点和一个平坦点。

InDesign简单曲线:

(来源:no-ip.org)

我正在尝试通过这段代码绘制这条曲线:

MoveToEx(hDC, 67, 134, NULL);  
POINT points[] = {{87, 30}, {48, 238}, {117, 143}};
PolyBezierTo(hDC, points, 3);

但是我画不出相同的曲线,我画的曲线是:


(来源:no-ip.org)

我的错误在哪里?是否需要转换?
谢谢。

最佳答案

嗯...

MoveToEx(hDC, 67, 134, NULL);  
POINT points[] = {{87, 30}, {48, 238}, {117, 143}};

您的第一分是 67,134,第二分是 87,30,第三分是 48,238。

Y 值为 134,然后是 30,然后是 238,我预计您会得到什么 - 一条向一个方向行进的线,然后在大约相反的方向上急剧返回。

您从 InDesign 获得的第一个点是“方向”点——但对于 PolyBezier,第一个点和最后一个点是 anchor 。我不是很确定,但我想你想要的是重新排列这些点,让你的 anchor 排在第一位和最后一位,InDesign 的“方向”点用作中间的两个控制点:

POINT points[] = {{87, 30}, {67, 134}, {48,238}, {117, 143}};   
// anchor, control, control, anchor
PolyBezier(hDC, points, 4);

除非您使用 MoveTo/LineTo(等等),否则我只使用 PolyBezier 而不是 PolyBezierTo —— 将所有数据保存在一个地方。

关于c++ - 如何通过InDesign/Illustrator路径点绘制曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315430/

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