如何使用cairo绘制左上角和右下角的矩形?

如何使用cairo绘制左上角和右下角的矩形?,c,math,drawing,cairo,pycairo,C,Math,Drawing,Cairo,Pycairo,我尝试使用cairo绘制一个具有左上角和右下角的矩形,类似于Qt徽标 以下是我想要的: 以下是我得到的: 代码如下: #include <stdio.h> #include <stdlib.h> #include <cairo.h> int main() { double height = 500, width = 250; cairo_surface_t *surface = cairo_image_surface_create (CA

我尝试使用cairo绘制一个具有左上角和右下角的矩形,类似于Qt徽标

以下是我想要的: 以下是我得到的:

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <cairo.h>

int main()
{
    double height = 500, width = 250;

    cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 500, 500);
    cairo_t *cr = cairo_create (surface);

    cairo_move_to(cr,0,0);
    cairo_line_to(cr,width,0);
    cairo_line_to(cr,width,height - height/4);
    cairo_line_to(cr,width - height/4,height);
    cairo_line_to(cr,0,height);

    cairo_set_line_width (cr, 10.0);
    cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
    cairo_stroke (cr);

    cairo_destroy (cr);
    cairo_surface_write_to_png (surface, "hello.png");
    cairo_surface_destroy (surface);

    return 0;
}
#包括
#包括
#包括
int main()
{
双高=500,宽=250;
cairo\u surface\u t*surface=cairo\u image\u surface\u create(cairo\u格式\u argb32500500);
cairo_t*cr=cairo_创建(曲面);
开罗移动到(cr,0,0);
开罗线到(cr,宽度,0);
开罗线至(cr、宽度、高度-高度/4);
开罗线(cr,宽度-高度/4,高度);
开罗线至(cr,0,高度);
cairo_集_线_宽度(cr,10.0);
cairo\u set\u line\u cap(cr、cairo\u line\u cap\u ROUND);
脑卒中(cr);
开罗大学(cr);
cairo_surface_write___png(surface,“hello.png”);
开罗·表面·破坏(表面);
返回0;
}

我没有得到我想要的结果,有人能给我小费吗?不管我用什么编程语言

使用更新后的形状,您只是缺少了第一个笔划。 其余的笔划需要相应地向右移动

double cutoff = height/4.0;
cairo_move_to(cr, 0, cutoff);
cairo_line_to(cr, cutoff, 0);
cairo_line_to(cr, width + cutoff, 0);
cairo_line_to(cr, width + cutoff, height - cutoff);
cairo_line_to(cr, width, height);
cairo_line_to(cr, cutoff, height);

随着形状的更新,你只是错过了第一个笔划。 其余的笔划需要相应地向右移动

double cutoff = height/4.0;
cairo_move_to(cr, 0, cutoff);
cairo_line_to(cr, cutoff, 0);
cairo_line_to(cr, width + cutoff, 0);
cairo_line_to(cr, width + cutoff, height - cutoff);
cairo_line_to(cr, width, height);
cairo_line_to(cr, cutoff, height);

您可以添加一点更详细的信息,说明您的结果出了什么问题。如果不阅读手册,我会尝试在开始绘制之前设置线条属性。指定颜色也可能有用。你能告诉我们你期望的行为是什么吗?你得到的行为是什么吗?@John我刚刚编辑了我的帖子,你能检查一下吗?@Gerhardh边框的颜色和矩形的背景并不重要,我只希望有一个矩形,看起来像QT的标志当我打开创建的文件,它看起来不像你的形状。我没有把左边关上,它的高度也不一样。您的图像似乎被扭曲或是用不同的代码创建的。您可以添加更多的细节来说明您的结果有什么问题。如果不阅读手册,我会尝试在开始绘制之前设置线条属性。指定颜色也可能有用。你能告诉我们你期望的行为是什么吗?你得到的行为是什么吗?@John我刚刚编辑了我的帖子,你能检查一下吗?@Gerhardh边框的颜色和矩形的背景并不重要,我只希望有一个矩形,看起来像QT的标志当我打开创建的文件,它看起来不像你的形状。我没有把左边关上,它的高度也不一样。您的图像似乎被扭曲或使用不同的代码创建谢谢,您对形状有什么建议吗?计算这些形状的公式没有一般的规则。我只是把它们画在纸上(有时只是在我的脑海里),标出线条的长度,然后开始画画。谢谢,你对形状有什么建议吗?计算这些形状的公式没有一般的规则。我只是把它们画在纸上(有时只是在我的脑海里),标记线的长度,然后开始画画。