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:43
479

Buchstaben malen - Lösung

unit mBuntschrift;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    imEingabe: TImage;
    imAusgabe: TImage;
    Label1: TLabel;
    Label2: TLabel;
    procedure imEingabeMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure imAusgabeMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
    punkteX: Array[1..200] of Integer;
    punkteY: Array[1..200] of Integer;
    index: Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
  imEingabe.Canvas.Rectangle(0,0,imEingabe.Width,imEingabe.Height);
  imAusgabe.Canvas.Rectangle(0,0,imAusgabe.Width,imAusgabe.Height);
  imEingabe.Canvas.Brush.Color := clBlack;
  imAusgabe.Canvas.Brush.Color := clBlack;
  for i:=1 to 200 do
  begin
    punkteX[i] := -1;
    punkteY[i] := -1
  end;
  index := 1;
end;

procedure TForm1.imEingabeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (Shift=[ssLeft]) and (index <= 200) then
  begin
    imEingabe.Canvas.Ellipse(X-3,Y-3,X+3,Y+3);
    punkteX[index] := X;
    punkteY[index] := Y;
    Inc(index)
  end;
end;

procedure TForm1.imAusgabeMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i: Integer;
begin
  for i:=1 to 200 do
    if (punkteX[i] >= 0) and (punkteY[i] >= 0) then
      imAusgabe.Canvas.Ellipse(
                  X+punkteX[i]-3, Y+punkteY[i]-3,
                  X+punkteX[i]+3, Y+punkteY[i]+3);
end;

end.