Круглая кнопка

Jesus McWood

Участник
Автор темы
76
35
Версия MoonLoader
.026-beta
Как сделать круглую кнопку в имгуи?
12.png
Lua:
script_name("Army-Assistant")
script_author("Jesus_McWood")
script_version("1.0")

local imgui = require 'imgui'
local inicfg = require 'inicfg'
local fa = require 'fAwesome5'
local fa_font = nil
local fa_glyph_ranges = imgui.ImGlyphRanges({ fa.min_range, fa.max_range })
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local settings_window_state = imgui.ImBool(false)

local text = imgui.ImBool(false)

local image

local sw, sh = getScreenResolution()
local ImVec2 = imgui.ImVec2

local tag = "{006400}[Army-Assistant]"
local main_color = 0x006400
local main_color_text = "{006400}"
local white_color = "{FFFFFF}"

local directIni = "moonloader\\Army-Helper\\settings.ini"

local mainIni = inicfg.load(nil, directIni)
--local stateIni = inicfg.save(mainIni, directIni)

function imgui.BeforeDrawFrame()
    if fa_font == nil then
        local font_config = imgui.ImFontConfig()
        font_config.MergeMode = true

        fa_font = imgui.GetIO().Fonts:AddFontFromFileTTF('moonloader/resource/fonts/fa-solid-900.ttf', 20.0, font_config, fa_glyph_ranges)
    end
end

function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = ImVec2(0.5, 0.5)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.48, 0.16, 0.16, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.98, 0.26, 0.26, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.98, 0.26, 0.26, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.48, 0.16, 0.16, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.88, 0.26, 0.24, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.Button]                 = ImVec4(0.98, 0.26, 0.26, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.98, 0.06, 0.06, 1.00)
    colors[clr.Header]                 = ImVec4(0.98, 0.26, 0.26, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.98, 0.26, 0.26, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.75, 0.10, 0.10, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.75, 0.10, 0.10, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.98, 0.26, 0.26, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.98, 0.26, 0.26, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.98, 0.26, 0.26, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.98, 0.26, 0.26, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end

apply_custom_style()

function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end
  while not isSampAvailable() do wait(100) end

    --wait(12500)

    sampAddChatMessage(tag .. " {FFFFFF}Скрипт успешно запущен. Автор: {006400}Jesus_McWood", 0x006400)
    sampAddChatMessage(tag .. " {FFFFFF}Скрипт создан для игроков сервера {006400}Grand Role Play", 0x006400)
    sampAddChatMessage(tag .. " {FFFFFF}Главное меню скрипта - {006400}/aa", 0x006400)

    sampRegisterChatCommand("aa", cmd_aa)
   
    image = imgui.CreateTextureFromFile("moonloader/lib/image.png")

    while true do
      wait(0)

      imgui.Process = main_window_state.v

    end
end

function cmd_aa()
    main_window_state.v = not main_window_state.v
end

function imgui.OnDrawFrame()

    --os.execute('explorer "http://google.com"')

    if main_window_state.v then --Главное меню
        imgui.SetNextWindowSize(imgui.ImVec2(700, 375))
        imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin(u8'Army-Assistant | Главное меню', main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)

        if imgui.Button(fa.ICON_FA_HOME .. u8" Главная", imgui.ImVec2(120, 80)) then
            main_window_state.v = true
        end

        if imgui.Button(fa.ICON_FA_COG .. u8" Настройки", imgui.ImVec2(120, 80)) then
            main_window_state.v = false
            settings_window_state.v = not settings_window_state.v
        end

        if imgui.Button(fa.ICON_FA_BARS .. u8" Команды", imgui.ImVec2(120, 80)) then
            main_window_state.v = false
        end

        if imgui.Button(fa.ICON_FA_POWER_OFF .. u8" Выход", imgui.ImVec2(120, 80)) then
            main_window_state.v = false
            imgui.Process = false
        end
       
        imgui.End()
    end
end

function imgui.TextQuestion(text)
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end

        --imgui.BeginChild("1", imgui.ImVec2(227, 55), true)

        --imgui.EndChild()
 
Последнее редактирование:
Решение
Ему не иконки, а кнопку саму надо.
Через выставление стиля FrameRounding - скругление делаешь макс значение, экпериментальным путём найди какое.

Lua:
imgui.PushStyleVar(imgui.StyleVar.FrameRounding, 2) -- 2 дефолт
--Кнопка
imgui.PopStyleVar(1) -- Где 1 - кол-во пропушенных стилей

Hatiko

Известный
Проверенный
1,502
620
Ему не иконки, а кнопку саму надо.
Через выставление стиля FrameRounding - скругление делаешь макс значение, экпериментальным путём найди какое.

Lua:
imgui.PushStyleVar(imgui.StyleVar.FrameRounding, 2) -- 2 дефолт
--Кнопка
imgui.PopStyleVar(1) -- Где 1 - кол-во пропушенных стилей