Закругленные углы с 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);