Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Airbrush mit Sperkeln bzw. Airbrush von Microsoft Paint (https://www.delphipraxis.net/20411-airbrush-mit-sperkeln-bzw-airbrush-von-microsoft-paint.html)

bolygon 17. Apr 2004 14:57


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!

mumu 17. Apr 2004 15:22

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

MisterNiceGuy 17. Apr 2004 15:37

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 :!:

Alibi 17. Apr 2004 15:42

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;

StefanDP 17. Apr 2004 16:36

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:
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;
*ganz stolz auf lauter schleifen ohne begin/end...*

mfg
stefan

StefanDP 17. Apr 2004 16:43

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 20:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz