GLBasic forum

Other languages => GLBasic - de => Topic started by: thomasp on 2007-Nov-30

Title: F200 Codebeispiel zum Malen?
Post by: thomasp on 2007-Nov-30
Wie kann ich einen F200-User in einem definierten Bildschirmbereich (z.B. 100x30 Pixel Rechteck) mit dem Stift einen Halbkreis malen lassen? Danke, bin noch neu und im Forum nichts gefunden.
Title: F200 Codebeispiel zum Malen?
Post by: Kitty Hello on 2007-Nov-30
Begrenzen mit VIEWPORT. Einen Kreis malen? :D
http://www.glbasic.com/forum/viewtopic.php?id=121
Title: F200 Codebeispiel zum Malen?
Post by: thomasp on 2007-Nov-30
Viewport ist prima, aber nicht das Programm soll malen, sondern der User, per Stift, so à la:

setze vier viewports (mehrere Malbereiche auf demselben Screen)
warte auf mousedown
malbereich = viewport-da-ist-der-stift-drin
solange mousedown (Stift gleitet auf dem touchscreen rum)
    setze pixel mouse-x, mouse-y
    merke[zeiteinheit] = "mouse-x, mouse-y"
end-solange
// mouseup, der User hat den Stift gehoben
if kuckMalObHalbKreis(malbereich,merke[]) print "gut gemalt"
else print "das war kein halbkreis, so ein Gekrakel... nochmal"

repeat oben

end
Title: F200 Codebeispiel zum Malen?
Post by: thomasp on 2007-Nov-30
Also so ähnlich aber da bleibt kein Pixel am Bildschirm kleben...

Code (glbasic) Select
WHILE TRUE
MOUSESTATE mx, my, b1, b2
IF b1
SETPIXEL mx, my, RGB(255, 255, 255)
ENDIF
SHOWSCREEN
WEND
Title: F200 Codebeispiel zum Malen?
Post by: D2O on 2007-Dec-01
Moin thomasp,

kleines problem mit showscreen ;), der flipt nicht nur die Buffer sonder löscht den Backbuffer leider auch gleich mit.
Darum wird Dir nur der aktuelle punkt angezeigt.

Entweder Du kopierst den Pixel  immer wieder, oder speicherst ihn in ein Array, oder mit hilfe von Types.

K, das wars, muss erst mal richtig wach werden und dann gehts zum Möbelrücken ;)
Title: F200 Codebeispiel zum Malen?
Post by: thomasp on 2007-Dec-01
> kleines problem mit showscreen , der flipt nicht nur die Buffer sonder
> löscht den Backbuffer leider auch gleich mit.

Tatsache? Schönen Dank. Wie hält man denn dann auf Bitmap-Ebene den Status? Gibt es so etwas wie einen schnellen Blockmove-Befehl, Backbuffer nach Zwischenspeicher-Buffer sichern?

Erstmal Semmeln holen...
Title: F200 Codebeispiel zum Malen?
Post by: BumbleBee on 2007-Dec-01
Quote from: thomaspaber da bleibt kein Pixel am Bildschirm kleben...
Doch, und wie die kleben. Bau zum Beispiel einfach nur mal USEASBMP ein.:D

Code (glbasic) Select
WHILE TRUE
    MOUSESTATE mx, my, b1, b2
    IF b1
        SETPIXEL mx, my, RGB(255, 255, 255)
    ENDIF
     USEASBMP
    SHOWSCREEN
WEND
Cheers
Title: F200 Codebeispiel zum Malen?
Post by: thomasp on 2007-Dec-01
Prima, es läuft, danke. Jetzt kleben Sie, aber man merkt (wie immer) das der Teufel im Detail steckt... muss die Punkte verbinden und überhaupt die ganze Malerei muss "dicker" werden. Und dann mal schauen wie es sich auf dem F200 verhält.
Title: F200 Codebeispiel zum Malen?
Post by: Schranz0r on 2007-Dec-01
dann musst du Drawrect nehmen und ausmitteln, so dass das Rect den ursprungspunkt in der mitte hat !

so in etwar

....
DRAWRECT MausX-Breite/2,MausY-Hoehe/2,Breite,Hoehe,Farbe(RGB)
....

Dann kannst du quasi die Strichstärke machen ;)
Title: F200 Codebeispiel zum Malen?
Post by: thomasp on 2007-Dec-01
Oder vielleicht mit einem Kreis als Sprite, mal schauen was schneller läuft.
Title: F200 Codebeispiel zum Malen?
Post by: Schranz0r on 2007-Dec-01
Japp, oder so , wieso beliebt ;)
Oder in Bayern würde man sagen(in Hochdeutsch):

Das kannst du machen, wie der Dachdecker, die Ziegeln verkehrt montieren, dass das Wasser hinaufläuft, dann sparst du dir die Dachrinne!
Title: F200 Codebeispiel zum Malen?
Post by: Kitty Hello on 2007-Dec-01
statt Setpixel halt DRAWSPRITE mit einem dicken Punkt.