GUI: GraphicsCanvas erneuern

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

bruZard

Betreff: GUI: GraphicsCanvas erneuern

BeitragMo, Nov 14, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Zwar ist das GUI Modul noch extrem frisch und ich bin mir fast sicher dass nur sehr wenige derzeit schon damit experimentieren, aber ich stelle meine Frage trotzdem mal:

Ich habe ein Window, in diesem ein Canvas, das Window ist "resizeable" ... Problem: Das Canvas wird entweder nicht mit vergrössert, oder, wenn ich SetGadgetShape() verwende, wird das was vorher noch nicht im Canvas war mit Müll voll gezeichnet.

Hat das mal jemand getestet und eine Möglichkeit gefunden den GraphicsCanvas auch zu vergrösser/verkleinern?

Hier noch 'n bissl Barbaren-Code:
Code: [AUSKLAPPEN]

Strict

Const MENU_FILE_NEW:Byte         = 101
Const MENU_FILE_LOAD:Byte      = 102
Const MENU_FILE_SAVE:Byte      = 103
Const MENU_FILE_SAVEAS:Byte   = 104
Const MENU_FILE_EXIT:Byte      = 105

Local desk:TGadget   = Desktop()
Local desk_w:Short   = ClientWidth(desk)
Local desk_h:Short   = ClientHeight(desk)


Global win_main:TGadget = CreateWindow("Holla, die Waldfee",(desk_w/2)-400,(desk_h/2)-300,800,600)


Global menu_file:TGadget = CreateMenu("Datei",0,WindowMenu(win_main))
CreateMenu "&Neu",MENU_FILE_NEW,menu_file,KEY_N,MODIFIER_COMMAND
CreateMenu "&Laden",MENU_FILE_LOAD,menu_file,KEY_L,MODIFIER_COMMAND
CreateMenu "&Sichern",MENU_FILE_SAVE,menu_file,KEY_S,MODIFIER_COMMAND
CreateMenu "&Sichern als...",MENU_FILE_SAVEAS,menu_file,0,MODIFIER_COMMAND
CreateMenu "",0,menu_file
CreateMenu "&Beenden",MENU_FILE_EXIT,menu_file,0,MODIFIER_COMMAND


UpdateWindowMenu(win_main)



Local cwidth:Short = ClientWidth(win_main)
Local cheight:Short   = ClientHeight(win_main)

Global map_canvas:TGadget = CreateCanvas(120,0,cwidth-120,cheight,win_main)
SetGraphics(CanvasGraphics(map_canvas))

CreateTimer 60

Local mx:Short
Local my:Short
   
Repeat
   Cls
      
   WaitEvent
   Select EventID()
      Case EVENT_TIMERTICK;         RedrawGadget(map_canvas)
      
      Case EVENT_WINDOWCLOSE;      End
      
      Case EVENT_MOUSEMOVE
         mx = EventX()
         my = EventY()
      
      Case EVENT_MENUACTION
         Select EventData()
            Case MENU_FILE_EXIT;   End
         End Select
      
      Case EVENT_GADGETPAINT
         SetGadgetShape(map_canvas,120,0,ClientWidth(win_main)-120,ClientHeight(win_main))
         SetGraphics CanvasGraphics(map_canvas)
         Cls
         
         DrawText String(mx)+", "+String(my),mx-20,my
         
         Flip
   End Select
Forever
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

rema

BeitragMo, Nov 14, 2005 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Gab es das Problem nicht auch unter B+ ? Also nicht in dem Ausmasse, aber es wurde beim Vergrössern oder Verkleinern des Windows, das Canvas einfach mitvergössert und so hat sich alles proportional gezoomt...

bruZard

BeitragMo, Nov 14, 2005 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn "gezoomt" werden würde könnte ich damit ja noch leben ... in obigem Fall wird aber einfach nur ein grösserer Speicherbereich erzeugt der nicht angesprochen werden kann und somit Müll auf dem Bildschrim erscheint. Das Canvas welches ich direkt ansprechen kann bleibt subjektiv immer gleich gross.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

MVB

BeitragMo, Nov 14, 2005 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitteschön! Smile
SetViewport 0,0,GadgetWidth(map_canvas),GadgetHeight(map_canvas)
Code: [AUSKLAPPEN]
Const MENU_FILE_SAVEAS:Byte   = 104
Const MENU_FILE_EXIT:Byte      = 105

Local desk:TGadget   = Desktop()
Local desk_w:Short   = ClientWidth(desk)
Local desk_h:Short   = ClientHeight(desk)


Global win_main:TGadget = CreateWindow("Holla, die Waldfee",(desk_w/2)-400,(desk_h/2)-300,800,600)


Global menu_file:TGadget = CreateMenu("Datei",0,WindowMenu(win_main))
CreateMenu "&Neu",MENU_FILE_NEW,menu_file,KEY_N,MODIFIER_COMMAND
CreateMenu "&Laden",MENU_FILE_LOAD,menu_file,KEY_L,MODIFIER_COMMAND
CreateMenu "&Sichern",MENU_FILE_SAVE,menu_file,KEY_S,MODIFIER_COMMAND
CreateMenu "&Sichern als...",MENU_FILE_SAVEAS,menu_file,0,MODIFIER_COMMAND
CreateMenu "",0,menu_file
CreateMenu "&Beenden",MENU_FILE_EXIT,menu_file,0,MODIFIER_COMMAND


UpdateWindowMenu(win_main)



Local cwidth:Short = ClientWidth(win_main)
Local cheight:Short   = ClientHeight(win_main)

Global map_canvas:TGadget = CreateCanvas(120,0,cwidth-120,cheight,win_main)
SetGraphics(CanvasGraphics(map_canvas))

CreateTimer 60

Local mx:Short
Local my:Short
   
Repeat
   Cls
     
   WaitEvent
   Select EventID()
      Case EVENT_TIMERTICK;         RedrawGadget(map_canvas)
     
      Case EVENT_WINDOWCLOSE;      End
     
      Case EVENT_MOUSEMOVE
         mx = EventX()
         my = EventY()
     
      Case EVENT_MENUACTION
         Select EventData()
            Case MENU_FILE_EXIT;   End
         End Select
     
      Case EVENT_GADGETPAINT
       SetViewport 0,0,GadgetWidth(map_canvas),GadgetHeight(map_canvas)
         SetGadgetShape(map_canvas,120,0,ClientWidth(win_main)-120,ClientHeight(win_main))
         SetGraphics CanvasGraphics(map_canvas)
         Cls
         
         DrawText String(mx)+", "+String(my),mx-20,my
         
         Flip
   End Select
Forever

Wink
aquamonit.de|BlitzMax|MaxGUI

bruZard

BeitragMo, Nov 14, 2005 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hui ... dankeschön MVB ... werde das gleich mal zuhause testen Smile
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

TheShadow

Moderator

BeitragMo, Nov 14, 2005 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub das canvas hat dann einfach skaliert - das war für einen editor unbrauchbar...

da muß man glaub ich manuell größe ändern oder neuerstellen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

rema

BeitragDi, Nov 15, 2005 2:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Im eng. Codearchiv hat jemand eine saubere Lösung: http://www.blitzbasic.com/code...?code=1532

bruZard

BeitragDi, Nov 15, 2005 11:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Yo, yo ... das war die Lösung. Im Prinzip hat mir tatsächlich nur das SetViewPort Schnicks Gedöns gefehlt ... super ... Mapeditor mit skalierbarem Fenster ist wunderbar Very Happy
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Hummelpups

BeitragDi, Nov 15, 2005 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
^^ wann gibts ne Demo? Wink
Obwohl ich das Skalieren garnicht so wichtig finde. 800x600
Ist doch eine Auflösung die eigentlich jeder PC heute darstellen
kann. Außerdem lassen sich diese Werte super teilen.

Ich benutze eigentlich immer 800x600.

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

bruZard

BeitragDi, Nov 15, 2005 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar, voreingestellt ist 800x600 ... in dieser Grösse geht das Fenster auf. Ich finde es aber extrem kewl wenn ich das Fenster dann einfach auf Betriebsauflösung bringe, also 1280x1024, und dann einen wesentlich grösseren Ausschnitt der Map bearbeiten kann.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Hummelpups

BeitragDi, Nov 15, 2005 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, stimmt schon. Bei meinem Online Spaceshooter evtl.
nen bissl unfair wenn leute mit auflösung 1600x1200
das doppelte sehen im gegensatz zu denen, mit max bildschirmauflösung
800x600 ^^

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

d-bug

BeitragDi, Nov 15, 2005 12:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, sowas finde ich auch nur bei Apps sinnvoll. Bei Spielen käme ich da gar nicht auf die Idee. Da sollte man doch eher alle GFX auch strecken. Meine Meinung ! Wink

bruZard

BeitragDi, Nov 15, 2005 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Öhm ... ich habe von nichts anderem als einem Mapeditor geschrieben ... nix Spiel Ombré
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

d-bug

BeitragDi, Nov 15, 2005 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist mir schon klar, aber IMurDOOM fing an von seinem Shooter zu schwafeln und ich reagierte darauf Smile

bruZard

BeitragDi, Nov 15, 2005 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Die MiniDemo die Teile der GUI in Action zeigt: Ich poste hier den Link zum Timemill Forum weil der begleitende Text verhindert dass hier alle enttäuscht rum spammen.

http://www.blitzcoding.de/time...hp?p=30#30
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group