Закругленные углы с C++

Я ищу некоторую библиотеку графики рисования 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");
}

Это результат, который я получаю

Это результат, который я получаю

Это результат, который я ищу

Это результат, который я ищу

2 ответа

Погуглив онлайн документацию, я обнаружил:

strokeAntiAlias ​​- bool - включает или отключает сглаживание при рисовании контуров объекта.

Я предлагаю:

image_bk.strokeAntiAlias(true); 

Расширяя ответ Ламара. Magick::Image.strokeAntiAlias а также Magick::DrawableStrokeAntiAlias это то, что вы хотите. Но я бы предложил использовать std::list<Drawable> генерировать стек контекста. Это позволит вашему приложению управлять тем, что будет нарисовано независимо от ввода-вывода изображения.

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

Другие вопросы по тегам