F200 Codebeispiel zum Malen?

Previous topic - Next topic

thomasp

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.

Kitty Hello


thomasp

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

thomasp

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

D2O

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 ;)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

thomasp

> 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...

BumbleBee

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
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

thomasp

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.

Schranz0r

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 ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

thomasp

Oder vielleicht mit einem Kreis als Sprite, mal schauen was schneller läuft.

Schranz0r

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!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

statt Setpixel halt DRAWSPRITE mit einem dicken Punkt.