gpt4 book ai didi

使用 Cairo 将曲线转换为对角线(在 Linux 上的 Avant Window Navigator 中)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:19 25 4
gpt4 key购买 nike

我目前正在尝试修改 Avant Window Navigator 的“Lucido 模式”代码,以便用对角线替换分隔符的曲线。

控制曲线的(开罗)代码部分出现在 GitHub 上以下文件的第 330 到 334 行:link

{ /* Oblique */
gfloat xm = ( *xs + xf ) / 2.0;
cairo_curve_to (cr, xm, *ys, xm, yf, xf, yf);
}

为了使目标更容易理解,下面是 AWN Lucido 现在的样子以及我希望它看起来像的图片:

Example

如果有人能帮助我获得正确的代码以使分隔符成为对角线,我将不胜感激。

非常感谢您的宝贵时间:)

最佳答案

可以找到有关使用 Cairo 绘制曲线的信息 here .

四点贝塞尔曲线如下所示:

enter image description here

cairo_curve_to 获取 p0 的当前笔位置,其参数是接下来的 3 个点。

因此,您可以通过为每个参数传递相同的点来使 cairo_curve_to 绘制一条直线。这有点浪费,但对您来说可能不是一个严重的问题。

看起来如果您为 _line_from_to 的两个参数都传递结束位置,它将退化为绘制一条直线,如您所愿。例如如果对该函数的调用是 _line_from_to(cr, &x, &y, x2, y2) 将其更改为 _line_from_to(cr, &x2, &y2, x2, y2)

或者,将 _line_from_to 的代码更改为

static void 
_line_from_to ( cairo_t *cr,
gfloat *xs,
gfloat *ys,
gfloat xf,
gfloat yf)
{
cairo_line_to (cr, xf, yf);
*xs = xf;
*ys = yf;
}

如果您想了解有关 cairo_curve_to 的更多信息,请参阅 this example .

关于使用 Cairo 将曲线转换为对角线(在 Linux 上的 Avant Window Navigator 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374806/

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