Thema: Grafiken

Einzelnen Beitrag anzeigen

Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#9

Re: Grafiken

  Alt 27. Dez 2009, 17:05
... also :
Beispiel :
Dein Zeigerinstrument soll ein kreis sein mit einem Durchmesser von 120 Pixeln,
dann ist der Mittelpunkt an den Koordinaten : X=60, Y=60,
Dein Canvas hat eine Fläche von 120 mal 120 Pixeln.

Beispiel zum Zeichnen der Position 0 (links)
Delphi-Quellcode:
with Image1.Canvas do
 begin
  Pen.Width := 1; // Breite Deines Striches (=Zeiger)
  Pen.Color := clBlack; // Zeigerfarbe
  MoveTo(60,60) // Zeigerbeginn im Mittelpunkt
  LineTo(10,60) // zeichne einen 50-pixel langen Zeiger nach links
 end;
wenn Du jetzt eine Bitmap als Zeigerinstrument lädst, musst Du vorher den Bereich unter dem zu zeichnenden Zeiger speichern, da die durch den überzeichneten Zeiger veränderten Pixel nach dem Verändern der Zeigerposition wieder zurückgeschrieben werden müssen.

Delphi-Quellcode:
oldPixels : array[0..49] of TColor; // array für 50 Pixel (Zeigerlänge) bereitstellen
                                     // im Abschnitt Private declaration

var
 i : Integer;

for i := 0 to 49 do
 oldPixels[i] := Image1.Canvas.Pixels[i+10, 60]; // Speichern der orginal-Pixel
nach dem Zeichnen des Zeigers (außer beim ersten Zeichnen des Zeigers)
muss das alte Pixelbild unter dem Zeiger wieder hergestellt werden :

Delphi-Quellcode:
var
 i : Integer;

for i := 0 to 49 do
 Image1.Canvas.Pixels[i+10, 60].Pixels := oldPixels[i];
dieses Beispiel gilt nur für die waagerechte Position, für andere Zeigerpositionen
müssen Vektoren gespeichert werden, da der Zeiger ja auch in Vektoren dargestellt
werden soll, die nicht auf 0, 90, 180 oder 270 Grad liegen.

.. ja, und die Skalierung musst Du eben per Winkelfunktionen berechnen.
Markus H.
  Mit Zitat antworten Zitat