Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-01-2007, 14:13   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2007
Beiträge: 4
Bereich zwischen dynamisch erstellten Linien einfärben?

Hi,

ich habe so ein einfaches "Paint" geschrieben: Bei gedrückter Maustaste wird eine Linie zwischen der alten und neuen Koordinate gezeichnet und Koordinaten in einem array gesichert. Das funktioniert soweit alles wunderbar. Jetzt möchte ich aber noch eine Funktion einbauen, die es ermöglicht einen Bereich (zb. einen so gemalten Kreis) mit einer Farbe zu füllen. Und da ist mir nicht ganz klar, wie ich das möglichst ohne großen Aufwand machen soll Ideal wäre, wenn auf die Weise auch bereits gemalte Linien einfärbbar wären (muss aber nicht sein).
Forumsuche und goole brachte mich da nicht wirklich weiter (bei letzterem fand ich nur, dass es "eigentlich ganz einfach" wäre).

Grüße,
styxxx
StYxXx ist offline   Mit Zitat antworten
Alt 19-01-2007, 15:04   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Schau dir in der Flash-Hilfe mal die Zeichen-API-Befehle an wie beginFill, lineStyle, moveTo und lineTo.
  Mit Zitat antworten
Alt 19-01-2007, 16:12   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2007
Beiträge: 4
Also der Hilfe und meinen Versuchen nach muss ich mit beginFill sagen, dass das kommende gefüllt werden soll. Dann neue Vektoren erzeugen und das ganze mit endFill abschließen.
Etwa so:
Code:
BeginFill
  Begrenzungslinien zeichnen
endfill
Allerdings will ich ja, dass der Raum zwischen bereits vorhandenen Linien gefüllt wird. Während die gezeichnet werden ist noch nicht klar, ob es zu einer Füllung kommen wird. Und wenn ja, ob sie nicht vielleicht auch durch weitere Linien begrenzt werden. Auch kann ich in dem Moment, in welchem der Benutzer eine Füllung erzeugen will nicht sagen, welche die passenden Begrenzungslinien sind (dazu müsste ich dann das gesamte array abgehen und jeweils prüfen, welche der vektoren pasend liegt, was doch ziemlich aufwändig wäre).
beginfill und dann ohne weitere Linien zu zeichnen mit enfill abzuschlißen bewirkt gar nichts.
StYxXx ist offline   Mit Zitat antworten
Alt 20-01-2007, 08:45   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
Zitat:
Zitat von StYxXx Beitrag anzeigen
Auch kann ich in dem Moment, in welchem der Benutzer eine Füllung erzeugen will nicht sagen, welche die passenden Begrenzungslinien sind
du wirst es nicht glauben - wir wissen es auch nicht ;-)

zwei linien haben zusammen 4 eckpunkte. daraus kann man zu jeder zeit ein viereck und dessen füllung zeichnen. wenn du aber noch nichtmal weisst, welche eckpunkte (linien) du benützen willst. woher sollen wir es dann wissen ?????

zeichne vielleicht mal ein bild, damit wir sehen können, was du da machen willst.

-----
vielleicht willst du flächen füllen, die komplett durch linien begrenzt sind?
flash8 kann mit bitmap's arbeiten und besitzt auch einen füll-befehl.

flash7 kann das nicht. somit müsstest du das rein vektormässig lösen.
das zu programmieren ist schon etwas aufwendiger.
mal in diese richtung arbeiten:
http://www.seibsprogrammladen.de/fra.../Schnittpunkte
+
http://www.seibsprogrammladen.de/fra...ispiele/flash6
-> berührungen
... konvexe Hülle: Punkte von einer Linie umschlossen
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (20-01-2007 um 08:54 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 20-01-2007, 15:58   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2007
Beiträge: 4
Zitat:
Zitat von hgseib Beitrag anzeigen
du wirst es nicht glauben - wir wissen es auch nicht ;-)

zwei linien haben zusammen 4 eckpunkte. daraus kann man zu jeder zeit ein viereck und dessen füllung zeichnen. wenn du aber noch nichtmal weisst, welche eckpunkte (linien) du benützen willst. woher sollen wir es dann wissen ?????

zeichne vielleicht mal ein bild, damit wir sehen können, was du da machen willst.

-----
vielleicht willst du flächen füllen, die komplett durch linien begrenzt sind?
flash8 kann mit bitmap's arbeiten und besitzt auch einen füll-befehl.

flash7 kann das nicht. somit müsstest du das rein vektormässig lösen.
das zu programmieren ist schon etwas aufwendiger.
mal in diese richtung arbeiten:
http://www.seibsprogrammladen.de/fra.../Schnittpunkte
+
http://www.seibsprogrammladen.de/fra...ispiele/flash6
-> berührungen
... konvexe Hülle: Punkte von einer Linie umschlossen
Also zum Anfang habe ich eigentlich nur eine schwarze Fläche. Auf dieser kann der Benutzer selbst Linien malen (eine ältere Version mit Fehlern findet sich hier). Wenn die Maus gedrückt wird, wir die derzeitige Mauskoordinate in ein Array übernommen. Um das gemalte Objekt darszustellen wird einfach das Array abgegangen und die gespeicherten Koordinaten für moveto und lineto benutzt. Was dabei rauskommt kann ich aber nicht vorhersagen. Es können Punkte sein, Linien oder auch Kreise oder Vierecke.
Hatte gedacht, es gibt vielleicht eine Funktion, die zb eine Maske erstellt und dabei automatisch angrenzende Vektoren erkennt. Diese müsste man dann nur noch irgendwie füllen. Oder eben, dass es bereits eine Funktionen bei Flash gibt um das alles in einem Schritt einfach zu bewerkstelligen. Die IDE bietet ja sowas (der Farbeimer )
Anhand des Arrays die der Mausposition nächsten Vektoren zu berechnen inkl. Schnittpunkten mit anderen wäre natürlich auch möglich. Aber mir persönlich dafür zu aufwändig. Auch hätte ich dann noch nicht herausgefunden, wie ich den Bereich füllen sollte (könnte natürlich viele neue Vektoren reinmalen, dass es gefüllt aussieht...).

Zur Veranschaulichung habe ich mal was gemalt Im Letzten Bild soll gezeigt werden, dass es nicht zwingend ein komplett abgegrenzer Bereich sein muss, den man füllt (in dem Fall wären halt die "Leinwand"-Ränder die Grenzen).

Mir geht es da um eine einfache Möglichkeit. Wenn diese so nicht existiert lasse ich das Feature halt weg (würde erklären, warum die Grafikgästebücher, die ich kenne auch keine solche Funktion bieten)
Angehängte Grafiken
Dateityp: png fuellen.png (8,5 KB, 14x aufgerufen)

Geändert von StYxXx (20-01-2007 um 16:01 Uhr)
StYxXx ist offline   Mit Zitat antworten
Alt 20-01-2007, 16:06   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
die angehängte grafik entspricht meiner antwort nach dem -----
somit
entweder auf flash8 und bitmap updaten
oder wenn deine user linien malen können, dann kannst du denen auch ein polygon-malwerkzeug spendieren.
rein vektormässig füllen ist jedenfalls knifflig.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 20-01-2007, 19:36   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2007
Beiträge: 4
Zitat:
Zitat von hgseib Beitrag anzeigen
entweder auf flash8 und bitmap updaten
Das mit Bitmaps hört sich so an, als wäre es im Prinzip das, was ich ganz am anfang gesucht hatte. Bis ich es dann eben mit Vektoren gelöst habe (was durchaus auch Vorteile hat).
Denke, ein Upgrade nur wegen eines kleines Projektes wäre etwas übertrieben (wobei es sowieso mal überlegen könnte)

Zitat:
oder wenn deine user linien malen können, dann kannst du denen auch ein polygon-malwerkzeug spendieren.
rein vektormässig füllen ist jedenfalls knifflig.
Hatte ich zuerst überlegt. Aber das wäre wieder Arbeit und außerdem finde ich es ganz witzig, wenn man gezwungen ist krickelige Linien zu malen. Nur füllen wäre nicht schlecht gewesen. Dann beschränke ich das jetzt wohl darauf, eine Leinwandhintergrundfarbe zu wählen.

Danke für die Hilfe
Falls noch irgendwem was einfällt kann er es ja noch schreiben
StYxXx ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele