- 371
- 93
- Версия MoonLoader
- .026-beta
Что я делаю не так? Пытаюсь центрировать иконку, но она почему-то отображается выше центра ;/
Тут вроде как нужно получить шрифт и с ним что-то делать, я хз
Использую эти иконки https://www.blast.hk/threads/173193/
(использовал и разные другие, всё так-же)
Костылями сделал так, примерно центр держит, но хотелось бы стабильный вариант
Тут вроде как нужно получить шрифт и с ним что-то делать, я хз
Использую эти иконки https://www.blast.hk/threads/173193/
(использовал и разные другие, всё так-же)
Lua:
local imgui = require 'mimgui'
local gi = require('GoogleIcons')
local icon
imgui.OnInitialize(function()
icon = gi.LoadFont(gi.FontType.Default, 30, {'settings applications'})
end)
imgui.OnFrame(function() return true end,
function()
imgui.ShowMetricsWindow()
local dl = imgui.GetWindowDrawList()
local pos = imgui.GetCursorScreenPos()
--local pos = imgui.GetWindowPos()
local mouse_pos = imgui.GetMousePos()
-- Размер прямоугольника
local rect_width = mouse_pos.x - pos.x
local rect_height = mouse_pos.y - pos.y
local icon_text = icon('settings applications')
local text_size = imgui.CalcTextSize(icon_text)
local text_pos = imgui.ImVec2(
pos.x + (rect_width - text_size.x) / 2,
pos.y + (rect_height - text_size.y) / 2
)
dl:AddRectFilled(pos, mouse_pos, 0xFF0000FF)
-- визуализация центральной линии прямоугольника
dl:AddLine(
imgui.ImVec2(pos.x, pos.y + rect_height / 2),
imgui.ImVec2(pos.x + rect_width, pos.y + rect_height / 2),
0xFFFFFFFF
)
-- визуализация позиции текста
dl:AddRect(
text_pos,
imgui.ImVec2(text_pos.x + text_size.x, text_pos.y + text_size.y),
0xFFFF00FF
)
dl:AddText(text_pos, 0xFFFFFFFF, icon_text)
--imgui.SetCursorPos(text_pos)
--imgui.Text(icon_text)
end)
Костылями сделал так, примерно центр держит, но хотелось бы стабильный вариант
вариант со смещением:
local text_pos = imgui.ImVec2(
pos.x + (rect_width - text_size.x) / 2,
pos.y + (rect_height - (text_size.y * 1.5)) / 2 + text_size.y
)
другой вариант:
local font = imgui.GetFont()
local glyph = font:FindGlyph(icon_text:byte())
local glyph_width = glyph.X1 - glyph.X0
local glyph_height = glyph.Y1 - glyph.Y0
local vertical_offset = (text_size.y - glyph_height) - (font.Ascent + glyph.Y0)
local text_pos = imgui.ImVec2(
pos.x + (rect_width - text_size.x) / 2,
pos.y + (rect_height - text_size.y) / 2 - vertical_offset
)
Последнее редактирование: