Slider

Начинающий
Статус
Оффлайн
Регистрация
1 Июн 2019
Сообщения
24
Реакции[?]
3
Поинты[?]
0
рисую кастомный слайдер через имгуи, и появилась проблема с нажатиями.
Когда я нажимаю на какую то часть слайдера, то текущее значение становится не туда где стоит курсор, а смещается влево

C++:
void Slider(float pos_x, float pos_y, float size_x, float size_y, int *v, int v_max, ImDrawList *draw)
{

    float size_step = size_x / v_max;

    ImVec2 curpos = ImGui::GetMousePos();

    status_lbutton = (GetKeyState(VK_LBUTTON) & 0x100) != 0 ? true : false;

    if (curpos.x >= pos_x && curpos.x <= pos_x + size_x && curpos.y >= pos_y && curpos.y <= pos_y + size_y && status_lbutton)
        is_slider_selected = true;

    if (!status_lbutton && is_slider_selected)
        is_slider_selected = false;

    if (is_slider_selected)
    {

        *v = abs(curpos.x - pos_x) * size_step;
    }

    if (*v < NULL)
        *v = NULL;

    if (*v > v_max)
        *v = v_max;

    float dest_fill = pos_x + (*v * size_step);

    ImRect rectangle(ImVec2(pos_x, pos_y), ImVec2(pos_x + size_x, pos_y + size_y));

    ImU32 colorbar = ImGui::GetColorU32(ImVec4(convertRGBtoFloat(105), convertRGBtoFloat(105), convertRGBtoFloat(105), convertRGBtoFloat(255)));
    ImU32 colorfill = ImGui::GetColorU32(ImVec4(convertRGBtoFloat(255), convertRGBtoFloat(222), convertRGBtoFloat(0), convertRGBtoFloat(255)));

    draw->AddRectFilled(rectangle.Min, rectangle.Max, colorbar, 20.0f);
    draw->AddRectFilled(rectangle.Min, ImVec2(dest_fill, rectangle.Max.y), colorfill, 20.0f);
}
 
Сверху Снизу