4

我正在寻找一些 c++ 绘图图形库来为动态键盘键创建者创建带有抗锯齿选项的圆角。我已经测试过 OpenCV 和 Magick++ 函数,但结果不是很好。谁能帮我这个?

这是使用 Magick++ 库创建圆角的一个代码示例

void create_rounded_image (int size, int border) {
    Magick::Image image_bk (Magick::Geometry (size, size), Magick::Color ("black"));

    image_bk.strokeColor ("white");
    image_bk.fillColor ("white");
    image_bk.strokeWidth(1);
    image_bk.draw (DrawableCircle(size, size, size*0.3, size*0.3));

    image_bk.write ("rounded.png");
}

这是我得到的结果

这是我得到的结果

这是我正在寻找的结果

这是我正在寻找的结果

4

2 回答 2

1

谷歌搜索一些在线文档,我发现:

strokeAntiAlias - bool -在绘制对象轮廓时启用或禁用抗锯齿。

我建议:

image_bk.strokeAntiAlias(true); 
于 2016-05-05T10:35:10.257 回答
0

扩展拉马尔的答案。这就是你想要的Magick::Image.strokeAntiAliasMagick::DrawableStrokeAntiAlias但我建议使用std::list<Drawable>来生成上下文堆栈。这将允许您的应用程序独立于图像 i/o管理将要绘制的内容。

using namespace Magick;

size_t size = 405;
size_t border = 6;

std::list<Drawable> ctx;
ctx.push_back(DrawableStrokeAntialias(MagickTrue));
ctx.push_back(DrawableStrokeColor("#CAF99B"));
ctx.push_back(DrawableStrokeWidth(border));
ctx.push_back(DrawableFillColor("#68C77B"));
ctx.push_back(DrawableCircle(size*0.75, size*0.25, size*0.33, size*0.66));

Image image_bk( Geometry(size, size), Color("white"));
image_bk.draw(ctx);

C++中的圆角

于 2016-05-05T14:30:42.700 回答