Einzelnen Beitrag anzeigen

fLaSh11
(Gast)

n/a Beiträge
 
#7

Re: Paintbox und darüber ein Image (Koordinatensystem)

  Alt 2. Jan 2008, 11:45
Also ich hab das ganze auch mal gemacht. Ich hab zwar ein TImage zum zeichnen genommen, aber du könntest einfach die Image1 durch PaintBox ersetzten.

Code ist eig. selbstklärend. Ich habe ihn sogar so konstruiert, dass er sich jeder Größe anpasst.

Delphi-Quellcode:
procedure TForm1.DrawCoords;
var
  i,h: Integer;
begin
  with Image1.Canvas do
    begin
    Pen.Color:=clBlack;
    //Ordinate & Abszisse
    MoveTo(0, Image1.Height div 2);
    LineTo(Image1.Width, Image1.Height div 2);
    MoveTo(Image1.Width div 2, 0);
    LineTo(Image1.Width div 2, Image1.Height);
    //Skalierung
    for i := 1 to 10 do
      begin
      h := i * (Image1.Width div 10);
      MoveTo(h, (Image1.Height div 2) - 5);
      LineTo(h, (Image1.Height div 2) + 5);
      MoveTo((Image1.Width div 2) - 5, h);
      LineTo((Image1.Width div 2) + 5, h);
      end;
    //Beschriftung
    TextOut((Image1.Width div 2) + 3,(Image1.Height div 2) + 1, '0');
    TextOut((Image1.Width div 2) + 48, (Image1.Height div 2) + 6,'1');
    TextOut((Image1.Width div 2) + 6,(Image1.Height div 2) - 56,'1');
    //Preifspitzen
    MoveTo(Image1.Width - 5, (Image1.Height div 2) - 5);
    LineTo(Image1.Width, (Image1.Height div 2));
    LineTo(Image1.Width - 5, (Image1.Height div 2) + 5);
    MoveTo((Image1.Width div 2) - 5, 5);
    LineTo((Image1.Width div 2), 0);
    LineTo((Image1.Width div 2) + 5, 5);
    end;
end;
//Edit: Allerdings sollte der Zeichengrund rechteckig sein, sonst musst du die for-Schleife überarbeiten. Und wenn man das Koordinatensystem verändern können soll, ist der Code hier auch schlecht. Also alles in allem ein Beispiel wie's gehen kann
  Mit Zitat antworten Zitat