Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Cairo将曲线转换为对角线(在Linux上的Avant Window Navigator中)_C_Linux_Desktop_Cairo_Dock - Fatal编程技术网

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

使用Cairo将曲线转换为对角线(在Linux上的Avant Window Navigator中),c,linux,desktop,cairo,dock,C,Linux,Desktop,Cairo,Dock,我目前正试图修改Avant Window Navigator的“Lucido模式”代码,以便用对角线替换分隔符的曲线 控制曲线的(Cairo)代码部分在GitHub上的以下文件中的第330行到第334行出现: 为了使目标更容易理解,以下是AWN Lucido现在的样子以及我希望它的样子: 如果有人能帮我把代码弄好,使分隔符成为一条直线,对角线,我将不胜感激 非常感谢您的时间:)可以找到有关使用Cairo绘制曲线的信息 四点Bezier曲线如下所示: cairo\u curve\u to获取p

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

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

为了使目标更容易理解,以下是AWN Lucido现在的样子以及我希望它的样子:

如果有人能帮我把代码弄好,使分隔符成为一条直线,对角线,我将不胜感激


非常感谢您的时间:)

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

四点Bezier曲线如下所示:

cairo\u curve\u to
获取
p0
的当前画笔位置,其参数为接下来的3个点

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

看起来,如果将
\u line\u的两个参数的结束位置从\u传递到
,它将退化为绘制一条直线,如您所愿。e、 g.如果对该函数的调用是
\u line\u from\u to(cr,&x,&y,x2,y2)
将其更改为
\u line\u from\u to(cr,&x2,&y2,x2,y2)

或者,将
\u行\u的代码从\u更改为

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的经验,所以无法找到修复方法。当我试图在AWN background lucido.c文件中使用此代码编译AWN时,我得到了以下错误:太棒了!这一次效果很好!非常感谢您的帮助:)完成:)非常感谢!
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;
}