![]() |
Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint
Hallo an alle!
Ich möchte gerne wissen, wie man einen Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint mit Delphi 6 erstellen kann. Ich weiß, dass herkömmlicher Pinsel ist: Canvas.LineTo(x,y) und es gibt verschiedene Moden für den Pinsel, die durch Canvas.Pen.Mode bestimmt werden. Gibt es vielleicht einen Modus fürs Airbrusch mit Sperkeln? Danke im voraus! |
Re: Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint
nee, da gibt es glaub ich keine methode für.
aber die kannst du dir doch leicht selbst schreiben. die mauskoordinaten beim click bekommst du ja und dann mal du einfach von deiner mauskoordinate aus in alle richtungen punkte und umso weiter du von deiner mauskoordinate weg kommst, umso weniger pixel zeichnest du... |
Re: Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint
Genau, einfach einen bestimmten Bereich um die Mausposition festlegen und dann mit Random ein paar pixel einfärben :roll:
ber nicht vergessen der Bereich bei jedem Mousemove neu zu setzen :!: |
Re: Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint
Ich würd das in etwa so machen:
- Dort, wohin geklickt wurde, da sollen in einem bestimmten Radius ja zufällig Pixel gemalt werden (Oder auch nicht). - Also alle Pixel dieses Kreises durchgehen zufällig den momentanen Pixel füllen oder halt nicht. Je nachdem, wie dicht gesprüht werden soll, gestaltest du den Faktor zufällig, der bestimmt, ob ein Pixel gesetzt werden soll oder nicht. Also meinetwegen if random(100) < sprühfaktor then malPixel; |
Re: Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint
hi
ich hab mich jetzt mal hingesetzt und einen code ausgearbeitet: die paintbox hat den namen "PaintBox1" und sollte schon so 400x400 pixel groß sein fürs beispiel aaalso: 8)
Code:
*ganz stolz auf lauter schleifen ohne begin/end...*
uses
...Math... // braucht man für Power procedure TForm1.Button1Click(Sender: TObject); var x_,y_ : Integer; x,y: Integer; r: Integer; abstand: Integer; gewichtung: Integer; begin r := 50; // "Radius" x := 150; //aktuelle Position y := 100; gewichtung := 100; // wie sehr mit einem "klick" gezeichnet werden soll Randomize; with PaintBox1.Canvas do for x_ := -r to r do // jedes Pixel des Quadrates durchgehen for y_ := -r to r do // der abstand von mittelpunkt und punkt im kreis ist: // round(Power(Sqr(x_)+Sqr(y_),1/2)) // Satz des Pythagoras!!! (hoch 1/2) = 2te wurzel if round(Power(Sqr(x_)+Sqr(y_),1/2)) <= r then if random(gewichtung) = 0 then Pixels[x_+x,y_+y] := clBlue; end; mfg stefan |
Re: Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint
Liste der Anhänge anzeigen (Anzahl: 1)
hab es noch ein bisschen optimiert!
beispiel siehe anhang :warn: mfg stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz