Вопрос Как создать похожий сепаратор?

Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Копипасты не будет, но я напишу как бы это выглядело в моем сорсе, сможешь легко переделать на свой если не нупь.

Код:
void DrawSeparator(
    const RectF& rect, // прямоугольник где нужно отрисовать разделитель
    const char8_t* title, // текст
    Drawing::Surface& draw, // поверхность или список отрисовки например если imgui
    Drawing::Font& font, // шрифт
    Drawing::Color line_color = { 255, 0, 0 }, // цвет линий
    Drawing::Color title_color = { 255, 255, 255 }) // цвет текста
{
    const float title_padding = 5; // отступы от названия с каждой стороны
    const float title_height = font.height(); // размер текста
    const Vect2F title_size = font.textSize(title_height, title); // ширина и высота текста в пикселях
    const Drawing::Color line_fadeout_color = line_color.seta(0); // цвет полоски прозрачный для перехода
    const float line_thickness = 2; // толщина линий
    const float line_y = rect.cy() - (line_thickness / 2); // координата линий сверху по центру
    const float line_width = rect.w() - title_padding - title_size.x - title_padding; // ширина одной линии
    draw.rectFilled(Vect2F(rect.x0, line_y), Vect2F(rect.x0 + line_width, line_thickness), line_fadeout_color, line_color, line_color, line_fadeout_color); // левая линия
    draw.rectFilled(Vect2F(rect.x1 - line_width, line_y), Vect2F(rect.x1, line_thickness), line_color, line_fadeout_color, line_fadeout_color, line_color); // правая линия
    draw.text(font, title_height, rect.center() - (title_size / 2), title_color, title); // текст
}
 
Последнее редактирование:
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,006
Реакции[?]
1,277
Поинты[?]
2K
Рендери линии и посреди них текст, используй ImGui::CalcTextSize(label) / 2, чтобы отрендерить так как тебе нужно
 
Участник
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
618
Реакции[?]
182
Поинты[?]
12K
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу