Drawimagerect an Auflösung anpassen(GUI)
Übersicht

InfectedBetreff: Drawimagerect an Auflösung anpassen(GUI) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo blitzforum.de-Gemeinde! Bisher hab ich hier immer nur mit gelesen, aber jetzt wollte ich einfach mal eine Frage stellen. ![]() Ausgangssituation Ich arbeite momentan an einem 2D Mapeditor, aber hänge grad etwas fest. Ich möchte, dass sie Auflösung verstellbar ist, erstmal kein Problem. Ich habe die GUI in der maximalen Auflösung erstellt, also dass diese genau auf die max Auflösung ausgelegt ist. Mit Drawimagerect kann man ja entscheiden in welcher Größe ein Bild gezeichnet wird. Meine Frage Gibt es eine Formel, mit der man berechnen kann in welcher größer die einzelnen GUI-Objekte gezeichnet werden müssen? Also quasi sowas wie gui_teil_w = screen_width / XYZ gui_teil_Y = screen_width / XYZ drawimagerect(gui_teil,gui_teil_x,gui_teil_y,gui_teil_w,gui_teil_h) Vielleicht hat ja jemand eine Lösung für mich parat, würde mich freuen ![]() |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einfache Lösung: Virtual Resolution (der Befehl lautet SetVirtualResolution).
Antwort auf deine Frage: Nehmen wir einmal an, die maximale Auflösung hat die Dimensionen max_width und max_height. In diesem Falle ist das GUI-Objekt an der Position x|y, hat die Breite width und die Höhe height. Die letzendlichen Bildschirmgrößen sind proportional zur Bildschirmauflösung, d.h., in der Auflösung screen_width/screen_height berechnest du die Werte, indem du die Ursprungswerte x, y, width, height mit der neuen Auflösung multiplizierst und durch die alte teilst: BlitzMax: [AUSKLAPPEN] DrawImageRect(img, x*screen_width/max_width, y*screen_height/max_height, width*screen_width/max_width, height*screen_height/max_height)
Oder anders ausgedrückt: In der Formel Zitat: gui_teil_w = screen_width / XYZ gilt: XYZ = max_width/width.
ZEVS |
||
Infected |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für die schnelle Antwort! Ich werds heute gleich mal umsetzen, und dann Bericht erstatten ![]() |
||
Infected |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also so richtig funktioniert es noch nicht...
Ich nehm mal als beispiel die Minimapumrandung Die Bilddatei ist 324x329, die aktuelle auflösung(1024x768) ist in den variablen screen_w und screen_h gespeichert, 1600x1200 ist die maximale vom editor unterstützte auflösung... DrawImageRect(gui_minimap_l,0,0,(324*screen_w)/1600,(329*screen_h)/1200) hier mal 2 Bilder, Resultat und Erwartung: Resultat ![]() Erwartung Irgendwie denk ich irgendwas falsch... |
||
Infected |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich hab ein wenig rumprobiert, dabei ist mir aufgefallen, dass
local test:Float test = 1024/1600 immer 0 ergibt, woran liegt das? Bin ich auf beiden Augen blind? |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
du musst Fixe zahlen auch als Floats schreiben, ansonsten sind Integer gemeint:
Code: [AUSKLAPPEN] local test:Float
test = 1024.0/1600.0 |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group