Grafikausgabe im Vordergrund

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

MichiMeister

Betreff: Grafikausgabe im Vordergrund

BeitragSo, Okt 28, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Bisher habe ich ausschließlich in VB Net programmiert, was mir deutlich leichter fiel. Leider besteht da der Nachteil, daß man immer ein halbes Windows auf unbekannten Rechnern installieren muß und dadurch gezwungen wird umfangreiche Installationsroutinen mitzuliefern. Ein Start der Anwendung von CD ist ohne vorherige Installation nicht möglich.
Deshalb wollte ich einige Dinge in BBplus realisieren.
Leider sind die Fenster- und Buttonbefehle sehr eingeschränkt und bieten nur wenig Gestaltungsmöglichkeiten.
Deshalb möchte ich jetzt meine eigenen Fenster und Buttons erstellen.
Das geht auch ganz gut.
Leider gelingt es mir nicht, ein erstelltes Layout im Vordergrund zu verändern, um zum Beispiel bei einem Text die Farbe zu ändern.
Die Grafikausgabe erfolgt immer im Hintergrund auch wenn ich den Befehl "SetBuffer FrontBuffer()" benutze.
Kann es sein, daß BBplus hier einen Bug hat? Obwohl ich die Version 1.45 heruntergeladen und installiert habe, wird mir nur Version 1.44 angezeigt.
Bin mittlerweile ziemlich genervt, weil ich in der Zeit, die ich daran nun schon sitze, das Projekt in VB längst fertig hätte.
Aber aufgeben kommt nicht infrage. Laughing

Eingeproggt

BeitragSo, Okt 28, 2007 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie machst du das genau?

Arbeitest du in einem Fenster mit einem Canvas?
Dann musst du im ql:CanvasBuffer arbeiten.

Arbeitest du im ql:Graphics Mode?
Dann sollte es eig mit Frontbuffer klappen.

EDIT: arbeitest du mit "Print"?
Gewöhn dir besser "Text" an, weil nur bei dem kann man die Textfarbe mit ql:Color ändern.

Und der Bug mit der Anzeige von v1.44 ist glaub ich schon bekannt.

mfG, Christoph.

PS: Ich liebe diese Quicklink-Funktion Smile
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

MichiMeister

BeitragSo, Okt 28, 2007 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite im Grafik-Modus und mit Text und es sollte funktionieren, tut es aber nicht.
Setbuffer bewirkt nichts. Ich kann es auch weglassen.
Woher bekomme ich Version 1.45?
Habe bereits 2x heruntergeladen von meinem Account und das File heißt auch 1.45 nur es ist nicht 1.45 drin.

Eingeproggt

BeitragSo, Okt 28, 2007 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
So ne Fernanalyse wird jetzt zum reinsten ratespiel.

Kannst du mal den Code posten?

Und das mit der Version: Du hast v1.45, es wird halt nicht so angezeigt. Das ist nur ein einziges falsches Byte (1.44 <-> 1.45) Wink
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

MichiMeister

BeitragSo, Okt 28, 2007 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Global xmaus,ymaus
Graphics 1024,768,0,0
;SetBuffer FrontBuffer()
ClsColor 192,192,192
Cls
;
Frame(200,50,140,80,True,"Text")
ShowPointer
Flip()
Repeat
   WaitEvent
   xmaus=MouseX()
   ymaus=MouseY()
   If MouseDown(1) Then
      If xmaus>200 And xmaus<340 And ymaus>50 And ymaus<130 Then
         Color 217,0,0
         Text 271,91,"Text",True,True
      EndIf
   EndIf
   If KeyDown(1) Then Exit
Forever
End
;
Function Frame(wx,wy,ww,wh,wsel,wt$)
   If wsel Then cl=255:cl2=110 Else cl=110:cl2=255
   Color cl,cl,cl:Rect wx,wy,ww,wh,0:Color cl2,cl2,cl2:Rect wx,wy+wh-1,ww,1,0:Rect wx+ww-1,wy,1,wh:Color 192,192,192:Rect wx+1,wy+1,ww-2,wh-2
   Color 255,255,255
   fnt=LoadFont("Arial",26,True,False,False)
   SetFont fnt
   Text 270,90,wt$,True,True
   Color 0,0,0
   Text 271,91,wt$,True,True
   FreeFont fnt
End Function

D2006

Administrator

BeitragSo, Okt 28, 2007 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzPlus nutzt den ql:FrontBuffer nicht mehr!
Jegliche Ausgabe geschieht automatisch auf den Backbuffer. Ein "SetBuffer Backbuffer()" zum Nutzen von Double Buffering ist damit nicht mehr notwendig.

Hier sieht man das ziemlich deutlich:
Code: [AUSKLAPPEN]
If FrontBuffer() = BackBuffer() Then Notify "HAHA! Verarscht! Ich bin gar kein richtiger Frontbuffer!"


Ist auch kein Bug, sondern von BRL so beabsichtigt.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

BladeRunner

Moderator

BeitragSo, Okt 28, 2007 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn Du nun noch die Codetags benutzt und Deinen Code leserlich einrückst wird man Dir unter Umständen sogar helfen können. Ersteres habe ich ausnahmsweise in deinem Beitrag eingepflegt.

Wobei ich nicht nachvollziehen kann warum Du etwas auf den Frontbuffer pinseln willst, das führt nur zu zerissenen Ausgaben. Es ist nicht umsonst so dass bei B+ der Backbuffer als Standart eingerichtet wurde und Frontbufferbefehle wie input und Print auf die Konsole umgeleitet werden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Shogo

BeitragSo, Okt 28, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wuerde auch CLS und FLIP mit in deine Hauptschleife schreiben.

Edit: Deine Frame Function muss auch noch mit rein. Und wozu brauchst du Waitevent() in einem Grafikfenster? Funktioniert das da Ueberhaupt?

@ Eingeproggt: Wie geht das mit dem Quicklink?

MichiMeister

BeitragSo, Okt 28, 2007 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid, wenn ich deinen Ansprüchen nicht genüge. Bei mir ist der Code eingerückt. Ging beim kopieren ins Forum verloren.
Ich habe keine Ahnung, wie man den Code hier am besten reinstellt, daß er so aussieht, wie er jetzt aussieht.
Ein Hinweis dazu wäre ganz nett. Ich bin leider neu.

Daß Frontbuffer nicht funktioniert, habe ich nun verstanden.
Da jetzt aber immer in den Backbuffer geschrieben wird, muß ich selbst bei kleinen Änderungen mit Flip() die Änderung nach vorn holen.
Das habe ich mit dem obigen Beispiel schon einmal ausprobiert. Allerdings verschwindet dann alles was vorne war in den Hintergrund und ist nicht mehr sichtbar. In dem Beispiel ändere ich nur den Text in der Farbe. Im Vollbildmodus mit Flip() bekomme ich dann auch nur den Text in rot auf schwarzem Hintergrund. Ich will aber den geänderten Text auf dem bereits vorhandenen Text haben.

BladeRunner

Moderator

BeitragSo, Okt 28, 2007 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
die Codetags siehst Du wenn du einen Post erstellst, über dem Textfeld sind mehrere Buttons.
Um zu deinem Problem zu kommen:
Der gängige Weg ist es immer alles neu zu zeichnen und erst zum Ende der Mainloop einmal zu flippen. Da das 60 mal in der Sekunde passiert fällte es nicht auf.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

MichiMeister

BeitragSo, Okt 28, 2007 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Besten Dank. Habe mich schon gewundert wie das geht mit dem Code einstellen. Wink

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group