Rechteck oder Oval wie bei Paint zeichnen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Hagbard

Betreff: Rechteck oder Oval wie bei Paint zeichnen

BeitragFr, Jun 10, 2005 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich denke der Titel sagt alles.

Wie könnte ich ein Rechteck bei Mausklick an die da aktuelle Stelle zeichnen?
Natürlich verlange ich keinen Code, würde mich aber über einen Ansatz freuen Smile...
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:05, insgesamt einmal bearbeitet
 

Chris02

BeitragFr, Jun 10, 2005 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würds mal so versuchen:
MouseX() und MouseY() als X und Y koordinaten des Rechteks

Hagbard

BeitragFr, Jun 10, 2005 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, ich meine was anderes
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:07, insgesamt einmal bearbeitet

Jan_

Ehemaliger Admin

BeitragFr, Jun 10, 2005 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
setbuffer imagebuffer(bildhandle)
between angels and insects

Hagbard

BeitragFr, Jun 10, 2005 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, werds mir mal ansehen.
 

Hallosager

BeitragFr, Jun 10, 2005 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde es auch so machen(hab ich auch mal):
-Man kann auswählen, welche Farbe das Rechteck/Oval haben soll.(Input und If-Bedingungen)
-Man muss mit der Maus klicken und dann wird der Bildschirm nicht gelöscht.(Until mousehit)
-Einen farbigen Punkt oder so als Mauszeiger nehmen.
-Irgendwie machen, dass es aufhört zu malen, wenn man wieder klickt.(Cls)
-Danach eine Maustaste drücken um eine andere Farbe zu nehmen.
-Danach steht auf dem Pc, dass man das Bild speichern kann, wenn man einen Screenshot macht.(Print)

Ctuchik

BeitragFr, Jun 10, 2005 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst ja quasi sobald die Maustaste gedrückt wird die aktuelle MouseX() und MouseY() Koordinate speichern. Dann wartest du bis die Maus wieder losgelassen wird und hast eine zweite X und Y Koordinate. Dann zeichnest du das Rechteck anhand dieser Koordinaten! Breite und Höhe sind dann halt X2-X1 und Y2-Y1. Achtung: Man kann das Rechteck dann nur richtung rechts und unten ziehen. Links und oben wären die Koordinate ja genau umgekehrt, wenn du verstehst was ich meine!

So willst du das doch, oder? Das man halt wie bei Paint ein Rechteck ziehen kann!
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Hagbard

BeitragSa, Jun 11, 2005 7:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
danke, dass du einen Vorschlag geschrieben hast. Very Happy
Ich habe eh vor alle neu gezeichneten Rechtecke und Ovale in einer Datei abzuspeichern, damit man das später wieder laden kann.

mfg Blacky
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:08, insgesamt einmal bearbeitet

DivineDominion

BeitragSa, Jun 11, 2005 9:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du mit Types umgehen kannst, erstelle bei Mausklick eine neue TRechteck-Instanz oder sowas mit Startpositiin MouseX() und Y und lass die Endkoordinaten offen. In der Schleife, die alle Rechtecke zeichnet, malst du die ohne Endposition einfach von ihrer Startposition bis an die aktuelle MouseX() und Y Koordinaten, bis man die Maustaste loslässt. Dann gibst du denen ohne Endposition die dann aktuelln Mauskoordinaten und voilà!

Abspeichern am besten mit WriteByte oder WriteInt oder sowas, weil eine ghanze ZEILE viel zu "groß" ist Smile
christian.tietze@gmail.com - https://christiantietze.de
macOS

Ctuchik

BeitragSa, Jun 11, 2005 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du nicht vor hast einzubauen dass man Rechtecke wieder löschen bzw. vergrößern oder verkleinern kann, dann kannst du das ganze auch als Bild speichern.

Ansonsten sind Types wohl wirklich die beste Lösung:
Code: [AUSKLAPPEN]

Type rechteck
  Field x%,y%
  Field w%,h%
End Type


Und dann ne Variable 'maus_pressed' (o.ä.) mit dem letzten Mauszustand
BlitzBasic: [AUSKLAPPEN]

If (MouseDown(1)) Then
If maus_pressed = False Then
maus_x = MouseX()
maus_y = MouseY()
;Startkoordinaten für Rechteck speichern
End If
maus_pressed = True
Else
If maus_pressed = True Then
;Endkoordinaten des Rechtecks
;Breite und Höhe ausrechnen
blubb.rechteck = New rechteck ;Neues Rechteck anlegen und die Daten drin speichern
End If
End If



EDIT: Um das ganze hinterher in einer Datei zu speichern gehst du alle Rechtecke in ner For blubb.rechteck = Each rechteck Schleife durch und
speicherst jeweils 4 Zahlen: x,y,w,h
Dazu empfiehlt sich WriteShort (das benutzt 2 Byte, kann also Werte bis 65536, das reicht völlig aus)
Beim wieder Auslesen liest du jeweils 4 Zahlen mit ReadShort und speicherst die wieder in einem neuen Type Rechteck!

MfG Ctuchik
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Hagbard

BeitragMo, Jun 20, 2005 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

danke nochmal für die Ansätze.
Ich kenne mich zwar noch nicht mit Types aus, aber schließlich sind in 4 Tagen Sommerferien. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group