Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Eine Eigene Linen Zeichnen ? (https://www.delphipraxis.net/102709-eine-eigene-linen-zeichnen.html)

Muetze1 3. Nov 2007 18:38

Re: Eine Eigene Linen Zeichnen ?
 
Zitat:

Zitat von mimi
Du meinst damit ist sowas schon möglich ? von Windows aus ? Bunte Linen ?

Wie gesprochen: Du musst eine Callback Funktion angeben und diese wird für jeden einzelnen Punkt mit dessen Koordinaten aufgerufen. Wie du diesen Punkt mals liegt in deiner Hand und somit kannst du diese doch malen wie du es willst. Das Beispiel zeigt doch schon auf, was möglich ist. Ich lasse mit der LineDDA() Funktion die 4 Linien ständig zeichnen und beim Zeichnen bestimmte ich nur, ob ich den jeweiligen Pixel nun zeichne oder nicht. Dabei wird immer wieder eine Verschiebung reingebracht, wass dann zu dem gezeigten Effekt der "marschierenden Ameisen" führt. Siehe EXE/Code.

/EDIT: roter Kasten?

SirThomberry trifft es genau.

mimi 3. Nov 2007 18:43

Re: Eine Eigene Linen Zeichnen ?
 
ich habe mir dein Beispiel noch einmal angesehen und mir ist ein Licht aufgegangen...

Aber leider nützt er mir wenig da ich unter Lazarus keine LineDDA Procedure habe.

Ich könnte allerdings den Code entsprechend umbauen... Wenn ich wollte.

Naja, dann nochmal VIELEN DANK.
ich glaube jetzt weiß ich wie LineDDA Arbeitet, hatte es beim ersten hinsehen nicht ganz verstanden aber jetzt schon. Unter Delphi währe das eine Erleichterung gewesen.

Muetze1 3. Nov 2007 18:49

Re: Eine Eigene Linen Zeichnen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von mimi
Aber leider nützt er mir wenig da ich unter Lazarus keine LineDDA Procedure habe.

Hatte ich ja schon vermutet. Hätte mich gewundert, wenn es so wäre.

Aber nun habe ich in der Zwischenzeit mal ein Beispiel von dem Marching Ants Beispiel abgeleitet mit einer bunten Linie. Vielleicht hilft es dir ja, um die Farbwerte zu bilden.

mimi 3. Nov 2007 18:54

Re: Eine Eigene Linen Zeichnen ?
 
nicht schlecht... das habe ich so hinbekommen:
Delphi-Quellcode:
procedure DrawRect(const aCanvas:TCanvas; const x1,y1,x2,y2:Integer; const AColor: TColor; const LinenStyle:array of Boolean; const FarbSyle:array of TColor);
begin

  // Oben
  DrawLine(aCanvas,x1,y1,x2,y1,AColor,LinenStyle,FarbSyle);

  // Unten
  DrawLine(aCanvas,x1,y2,x2,y2,AColor,LinenStyle,FarbSyle);

  // Links
  DrawLine(aCanvas,x1,y1,x1,y2,AColor,LinenStyle,FarbSyle);

  // Rechts
  DrawLine(aCanvas,x2,y1,x2,y2,AColor,LinenStyle,FarbSyle);
end;
Auf diese art und weise kann ich ebenfalls ein Viereck zeichnen....
Was mit Bunten Linen und Stylen klar kommt. Das einzigte Problem was ich noch haben sind Füllmuster.

alzaimar 4. Nov 2007 08:02

Re: Eine Eigene Linen Zeichnen ?
 
Schau Dir einfach den Bresenham-Algorithmus an, das ist eigentlich der Algorithmus, der in so ziemlich heder Graphics-Engine implementiert ist. Er benötigt keine Floatingpoint-Mathematik und ist imho der schnellste Algorithmus.
Hier in der DP
Wiki

mimi 4. Nov 2007 15:02

Re: Eine Eigene Linen Zeichnen ?
 
Floatingpoint-Mathematik
die kenne ich gar nicht....

Danke ! Den Wiki Aktikel kannte ich schon, der hat mir nicht weiter geholfen, wegen den Formeln die ich verstehe, weil ich nicht weiß wie ich sie lesen muss

Der Andere link könnte Hilfreich sein. Vielen Dank dafür.....
Weil ich möchte wie schon gesagt noch weitere Figuren selbst zeichnen wie z.b. ein Kreis.Ich habe gelesen das kann der Bresenham-Algorithmus ebenfalls.

edit00:
Delphi-Quellcode:
if dy >= 0 then    // positive Steigung
    if dx >= dy then   // leichte positive Steigung
      for x := P1.X to P2.X do
      begin
        Plot(x,y);
        if 2*(e + dy) < dx then
          Inc(e,dy)
        else
        begin
          Inc(y);
          Inc(e, dy-dx);
        end;
      end
    else
Diesen Teil verstehe icn noch nicht ganz: was passiert genau bei 2*(e+dy) ?
ich weiß das es sich hierbei um eine Berechnung handelt. aber zu welchem Zweck ?

Khabarakh 4. Nov 2007 15:27

Re: Eine Eigene Linen Zeichnen ?
 
Zitat:

Zitat von mimi
Floatingpoint-Mathematik
die kenne ich gar nicht....

Floatingpoint = Gleitkommazahl ;) . Soll heißen, der Algo benötigt die FPU überhaupt nicht. Genauer gesagt benötigt er nicht einmal mehr als Addition und Bit-Shifting.

Zitat:

Danke ! Den Wiki Aktikel kannte ich schon, der hat mir nicht weiter geholfen, wegen den Formeln die ich verstehe, weil ich nicht weiß wie ich sie lesen muss
:gruebel: Unter "Ansatz" lässt sich nur eine einzige Formel finden und die ist zur mathematischen Ergänzung.

Zitat:

Diesen Teil verstehe icn noch nicht ganz: was passiert genau bei 2*(e+dy) ?
Dazu müsstest du schon das verlinkte Tutorial durchlesen. Die Erklärung bei Wikipedia ist aber wirklich einfacher und kommt ganz ohne Formeln aus.

mimi 4. Nov 2007 15:40

Re: Eine Eigene Linen Zeichnen ?
 
naja, dann muss ich die Funktion mal bei Gelegenheit auseinander nehmen, Zeile für Zeile.
Aber die Beispiel Soruce Sagen mir im Moment recht wenig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 Uhr.
Seite 3 von 3     123   

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