--где-то в скрипте
function imgui.TextColoredRGB(text)
local style = imgui.GetStyle()
local colors = style.Colors
local ImVec4 = imgui.ImVec4
local explode_argb = function(argb)
local a = bit.band(bit.rshift(argb, 24), 0xFF)
local r = bit.band(bit.rshift(argb, 16), 0xFF)
local g = bit.band(bit.rshift(argb, 8), 0xFF)
local b = bit.band(argb, 0xFF)
return a, r, g, b
end
local getcolor = function(color)
if color:sub(1, 6):upper() == 'SSSSSS' then
local r, g, b = colors[1].x, colors[1].y, colors[1].z
local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
return ImVec4(r, g, b, a / 255)
end...
Не получается почему-то![]()
цвет текста в imgui
imgui.Text(u8'- Привет, Алёша') Как сделать чтобы Алёша был красного цвета? imgui.TextColored(imgui.ImVec4(1.0, 0.0, 0.0, 1.0), 'Text')www.blast.hk
--где-то в скрипте
function imgui.TextColoredRGB(text)
local style = imgui.GetStyle()
local colors = style.Colors
local ImVec4 = imgui.ImVec4
local explode_argb = function(argb)
local a = bit.band(bit.rshift(argb, 24), 0xFF)
local r = bit.band(bit.rshift(argb, 16), 0xFF)
local g = bit.band(bit.rshift(argb, 8), 0xFF)
local b = bit.band(argb, 0xFF)
return a, r, g, b
end
local getcolor = function(color)
if color:sub(1, 6):upper() == 'SSSSSS' then
local r, g, b = colors[1].x, colors[1].y, colors[1].z
local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
return ImVec4(r, g, b, a / 255)
end
local color = type(color) == 'string' and tonumber(color, 16) or color
if type(color) ~= 'number' then return end
local r, g, b, a = explode_argb(color)
return imgui.ImColor(r, g, b, a):GetVec4()
end
local render_text = function(text_)
for w in text_:gmatch('[^\r\n]+') do
local text, colors_, m = {}, {}, 1
w = w:gsub('{(......)}', '{%1FF}')
while w:find('{........}') do
local n, k = w:find('{........}')
local color = getcolor(w:sub(n + 1, k - 1))
if color then
text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w)
colors_[#colors_ + 1] = color
m = n
end
w = w:sub(1, n - 1) .. w:sub(k + 1, #w)
end
if text[0] then
for i = 0, #text do
imgui.TextColored(colors_[i] or colors[1], u8(text[i]))
imgui.SameLine(nil, 0)
end
imgui.NewLine()
else imgui.Text(u8(w)) end
end
end
render_text(text)
end
--в OnDraw меню твоей
imgui.TextColoredRGB("Обычный текст {HEX-color}тут цветной текст");
попробуй так:
кодик:--где-то в скрипте function imgui.TextColoredRGB(text) local style = imgui.GetStyle() local colors = style.Colors local ImVec4 = imgui.ImVec4 local explode_argb = function(argb) local a = bit.band(bit.rshift(argb, 24), 0xFF) local r = bit.band(bit.rshift(argb, 16), 0xFF) local g = bit.band(bit.rshift(argb, 8), 0xFF) local b = bit.band(argb, 0xFF) return a, r, g, b end local getcolor = function(color) if color:sub(1, 6):upper() == 'SSSSSS' then local r, g, b = colors[1].x, colors[1].y, colors[1].z local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255 return ImVec4(r, g, b, a / 255) end local color = type(color) == 'string' and tonumber(color, 16) or color if type(color) ~= 'number' then return end local r, g, b, a = explode_argb(color) return imgui.ImColor(r, g, b, a):GetVec4() end local render_text = function(text_) for w in text_:gmatch('[^\r\n]+') do local text, colors_, m = {}, {}, 1 w = w:gsub('{(......)}', '{%1FF}') while w:find('{........}') do local n, k = w:find('{........}') local color = getcolor(w:sub(n + 1, k - 1)) if color then text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w) colors_[#colors_ + 1] = color m = n end w = w:sub(1, n - 1) .. w:sub(k + 1, #w) end if text[0] then for i = 0, #text do imgui.TextColored(colors_[i] or colors[1], u8(text[i])) imgui.SameLine(nil, 0) end imgui.NewLine() else imgui.Text(u8(w)) end end end render_text(text) end --в OnDraw меню твоей imgui.TextColoredRGB(u8"Обычный текст {HEX-color}тут цветной текст"); --насчёт ";" в конце строчки я хз у меня с ней нужна она или нет я хз, как то так
local encoding = require 'encoding'в этом, я и так понимаю, что цвет не изменился
скинь текст и HEX цвета которые нужны
Purple | #800080 |
Fuchsia | #FF00FF |
братик сорян ошибочка вышла, там "u8" ненужен это из за него текст сломался
Purple #800080
Fuchsia #FF00FF
вот
Дааааа, сработало спасибо!братик сорян ошибочка вышла, там "u8" ненужен это из за него текст сломался
пожалуйста, исправилДааааа, сработало спасибо!
Измени пожалуйста в своем коде эту ошибку, чтоб те кто смотрели эту тему не сталкивались с этим
пожалуйста, исправил