Informatik Material Portal Portfolio Präsentation Grafik Tabellenkalkulation Informatik56 9 10 11 12 13 Messen, Steuern, Regeln Linux Theorie Didaktik Open Source Spiele Wettbewerbe Netzbetreuung intern Literatur Links Energie corewar UNIX/Linux
Pfad: Startseite / Fächer / Informatik
Autor: be
21.09.2005 10:48
422

Grafikprozeduren Lösung

  1. Schreiben Sie eine Prozedur moveToCenter, die den Stift in die Mitte der Image- Zeichenfläche setzt.
    procedure TForm1.moveToCenter;
    begin
      Image1.Canvas.MoveTo(Image1.Width div 2, Image1.Height div 2);
    end;
    
  2. Schreiben Sie eine Prozedur kreis, die einen Kreis zeichnet, dessen Mittelpunkt die aktuelle Stiftposition ist (Image1.Canvas.PenPos.X und Image1.Canvas.PenPos.Y). Der Radius wird als Parameter an die Prozedur übergeben.
    procedure TForm1.kreis(radius: Integer);
    begin
      with Image1.Canvas do
        Ellipse(PenPos.X - radius, PenPos.Y - radius,
                PenPos.X + radius, PenPos.Y + radius);
    end;
    
  3. Schreiben Sie eine Prozedur lineToDot, die von der aktuellen Stiftposition einen Strich zu der als Parameter übergebenen Position zeichnet, und an die Endposition einen Kreis zeichnet, dessen Radius dem Vierfachen der aktuellen Stiftdicke entspricht.
    procedure TForm1.lineToDot(x,y: Integer);
    begin
      Image1.Canvas.LineTo(x,y);
      kreis(4*Image1.Canvas.Pen.Width);
    end;
    
  4. Schreiben Sie ein Programm, das zunächst den Stift in die Mitte setzt (moveToCenter aufrufen). Wenn der Benutzer auf eine Position in der Zeichenfläche klickt (Ereignis OnMouseUp der Image-Komponente), soll die Prozedur LineToDot mit dieser Position als Parameter aufgerufen werden.
    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      lineToDot(X,Y);
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      moveToCenter;
    end;