Je?eli chcesz skalowa? to naucz si? skalowania wed?ug brzyska...
By cokolwiek skalowa?, najpierw trzeba nauczy? si? pozycjonowa? interfejs.
screenW = guiGetScreenSize()
-- lewa strona ekranu
x = koordy -- od lewej do po?owy ekranu
-- ?rodek ekranu
x = screenW/2 -- do ?rodkowania element?w
-- od prawej strony ekranu
x = screenW - koordy -- od prawej strony ekranu
Za???my, ?e robimy obrazek w prawym g?rnym rogu ekranu.
local width, height = 300, 200
local x, y = screenW-width-100, height+100
Uzyskujemy spoko efekt. 100 to dodatkowy odst?p dla estetyczno?ci.
Po co teraz wymy?lono zoom? Na rozdzielczo?ci 800x600 ten obrazek zajmie 1/3 ekranu, a na rozdzielczo?ci 1920x1080 b?dzie ma?y i ustronny.
Kalkulacj? przedstawion? tutaj wymy?li?em rok temu, bo l0nger dopasowywa? zoom r?cznie.
Za?o?enie jest takie, ?e im mniejsza rozdzielczo?? od projektowanej (np. od 1920) tym wi?ksze zmniejszenie obrazka.
SW, SH = guiGetScreenSize()
local baseX = 1920 -- rozdzielczo?? bazowa X, na kt?rej opieramy interfejs. Powy?ej tej rozdzielczo?ci interfejs b?dzie zbyt ma?y.
local zoom = 1
local minZoom = 2 -- maksymalne zmniejszenie interfejsu (tutaj: dwukrotne)
if SW < baseX then -- je?li rozdzielczo?? mojego ekranu jest mniejsza ni? bazowa, stopniowo zwi?kszamy zmniejszenie interfejsu
zoom = math.min(minZoom, baseX/SW)
end
Przewag? takiego sposobu jest to, ?e nie jest zale?ny od formatu obrazu i nie jest skalowany w g?r?, tylko w d??: strata jako?ci jest znacznie mniejsza.
Co otrzymujemy?
local width, height = 300/zoom, 200/zoom
local x, y = screenW-width-100/zoom, height+100/zoom
Interfejs teraz b?dzie stopniowo zmniejsza? si? od rozdzielczo?ci Full HD.
Je?li kto? nadal nie rozumie o co z tym chodzi, niech pozostanie przy skalowaniu relatywnym i zaczeka na rozw?j swojej wiedzy - wtedy zrozumie si? pewne rzeczy
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach