GUI: GraphicsCanvas erneuern
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
bruZardBetreff: GUI: GraphicsCanvas erneuern |
Mo, Nov 14, 2005 15:35 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Nov 14, 2005 17:37 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Nov 14, 2005 18:06 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Nov 14, 2005 18:10 Antworten mit Zitat |
|
---|---|---|
Bitteschön!
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 |
||
aquamonit.de|BlitzMax|MaxGUI |
bruZard |
Mo, Nov 14, 2005 18:19 Antworten mit Zitat |
|
---|---|---|
Hui ... dankeschön MVB ... werde das gleich mal zuhause testen | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
TheShadowModerator |
Mo, Nov 14, 2005 18:19 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Nov 15, 2005 2:42 Antworten mit Zitat |
|
---|---|---|
Im eng. Codearchiv hat jemand eine saubere Lösung: http://www.blitzbasic.com/code...?code=1532 | ||
bruZard |
Di, Nov 15, 2005 11:36 Antworten mit Zitat |
|
---|---|---|
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 | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Hummelpups |
Di, Nov 15, 2005 11:43 Antworten mit Zitat |
|
---|---|---|
^^ wann gibts ne Demo?
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 |
Di, Nov 15, 2005 11:45 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Nov 15, 2005 12:18 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Nov 15, 2005 12:52 Antworten mit Zitat |
|
---|---|---|
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 ! | ||
bruZard |
Di, Nov 15, 2005 13:24 Antworten mit Zitat |
|
---|---|---|
Ö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 |
Di, Nov 15, 2005 13:32 Antworten mit Zitat |
|
---|---|---|
Ist mir schon klar, aber IMurDOOM fing an von seinem Shooter zu schwafeln und ich reagierte darauf | ||
bruZard |
Di, Nov 15, 2005 20:49 Antworten mit Zitat |
|
---|---|---|
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 |
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group