Guten Tag,
Ich hab mal wieder ein kleines Problemchen mit der Fixierung von einem DX-Fenster.
Ich möchte, das Beispielsweise ein Rectangle in der Mitte des Bildschirmes gezeichnet wird.
Das ganze läuft über eine Extra Klasse, und das ganze läuft so ab:
- Renderklasse wird erstellt
- Renderklasse erhält absolute screenWidth & screenHeight Werte (1600 x 900), die die Bildschirmgröße definieren, mit dem die Koordinaten des Fensters die Mitte des Bildschirmes repräsentieren
- Methoden der RenderKlasse werden benutzt, um die Rectangles zu Zeichnen.
- Wichtig hierbei: Größe bleibt gleich. Nur die Position soll sich ändern.
Die Renderklasse, Auszug:
-- ///////////////////////////////
-- ///// Constructor //////
-- ///////////////////////////////
function RenderManagerCenter:Constructor(aesx, aesy)
self.aesx = aesx;
self.aesy = aesy;
self.sx, self.sy = guiGetScreenSize();
outputDebugString("[CALLING] RenderManagerCenter: Constructor");
end
-- ///////////////////////////////
-- ///// dxDrawRectangle //////
-- ///////////////////////////////
function RenderManagerCenter:dxDrawRectangle(x, y, w, h, color)
return dxDrawRectangle(self.sx-(self.aesx-x), self.sy-(self.aesy-y), w, h, color, false);
end
Alles anzeigen
Die (in meinem Fall) Inventarklasse, wo das Objekt erzeugt wird:
function Inventory:Constructor(...)
...
self.rm = RenderManagerCenter:New(1600, 900); -- 1600 und 900 sind hier in meinem Fall die Groesse meines Bildschirmes, mitdem ich das GUI erstellt habe, und es richtig in der Mitte mit den angegeben X und Y Werten angezeigt wird
end
-- Wie es Beispielsweise gezeichnet wird: (Auszug)
function Inventory:Render()
...
self.rm:dxDrawText("Inventory", 732, 239, 1003, 275, tocolor(0, 0, 0, 143), 2, "pricedown", "center", "center", false, false, false, false, false)
self.rm:dxDrawRectangle(505, 232, 595, 378, tocolor(33, 30, 0, 138), false)
self.rm:dxDrawRectangle(511, 241, 208, 358, tocolor(0, 0, 0, 107), false)
self.rm:dxDrawRectangle(511, 240, 208, 31, tocolor(0, 0, 0, 107), false)
...
end
Alles anzeigen
Wie es in einer 1600 x 900 Auflösung aussieht:
Wie es in einer 1920 x 1080 Auflösung aussieht:
Ich hoffe, jemand versteht worauf ich hinaus möchte. Das Fenster wird nicht in jeder Auflösung in der Mitte angezeigt, wobei die Berechnungen eigentlich Korrekt sind.
Währe über Hilfe dankbar.
mfg