为什么cairo使用暗像素绘制曲线

为什么cairo使用暗像素绘制曲线,c,2d,cairo,C,2d,Cairo,我试着在iOS上和cairo一起画画。我找到了一个非常简单的例子来说明如何使用 但当我用这个代码绘制白色路径时: int r = 255; int g = 255; int b = 255; double lineWidth = 6.0, degrees = M_PI / 180.0, r = (double)color.r / 255.0, g = (double)color.g / 255.0,

我试着在iOS上和cairo一起画画。我找到了一个非常简单的例子来说明如何使用

但当我用这个代码绘制白色路径时:

int r = 255;
int g = 255;
int b = 255; 

double
    lineWidth   = 6.0,
    degrees     = M_PI / 180.0,
    r           = (double)color.r / 255.0,
    g           = (double)color.g / 255.0,
    b           = (double)color.b / 255.0;

    /* start drawing from half of line width*/
    x      += lineWidth / 2.0;
    y      += lineWidth / 2.0;
    width  -= lineWidth;
    height -= lineWidth;

    cairo_new_sub_path( cr );
    cairo_arc( cr, x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees );
    cairo_arc( cr, x + width - radius, y + height - radius, radius, 0 * degrees, 90 * degrees );
    cairo_arc( cr, x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees );
    cairo_arc( cr, x + radius, y + radius, radius, 180 * degrees, 270 * degrees);
    cairo_close_path( cr );
    cairo_set_fill_rule( cr, CAIRO_FILL_RULE_WINDING );
    cairo_set_source_rgb( cr, r, g, b );
    cairo_fill_preserve( cr );
    cairo_set_source_rgb( cr, r, g, b );
    cairo_set_line_width( cr, lineWidth );
    cairo_stroke( cr );
像素应该是白色的,但在角落里它们不是,我做错了什么


Siggestion,不要在一条语句中写入多个变量定义。由于是您的代码,
width
height
似乎属于
double
类型。您是如何绘制蓝色背景的?开罗也这样吗?如果没有,怎么办?我正在使用cocos2dx,但问题只是在没有最终绘图的情况下出现。所以我只是把图像放在板条箱里,在上面画图,看图像数据,在cairo画图之后像素就错了,我用cairo,图像,曲面,得到原始像素数据。Cocos2dx不影响绘图。