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:53
418

Zeichen kopieren 2D - Lösung

unit Unit1;

interface

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

type
  TMainForm = class(TForm)
    imEingabe: TImage;
    imAusgabe: TImage;
    btEinLoeschen: TBitBtn;
    btAusLoeschen: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure imEingabeMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure imAusgabeMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure btEinLoeschenClick(Sender: TObject);
    procedure btAusLoeschenClick(Sender: TObject);
    procedure imEingabeDblClick(Sender: TObject);
  private
    { Private-Deklarationen }
    pixels: array[0..199,0..199] of Boolean;
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  imEingabe.Canvas.Brush.Color := clWhite;
  imEingabe.Canvas.Rectangle(0, 0, imEingabe.Width, imEingabe.Height);
  imAusgabe.Canvas.Brush.Color := clWhite;
  imAusgabe.Canvas.Rectangle(0, 0, imAusgabe.Width, imAusgabe.Height);
end;

procedure TMainForm.imEingabeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (Shift = [ssLeft]) and
      ( 0<= X) and (X <= 199) and
      (0 <= Y) and (Y <= 199) then
  begin
    imEingabe.Canvas.Brush.Color := clBlack;
    pixels[X, Y] := true;
    imEingabe.Canvas.Ellipse(X-3, Y-3, X+3, Y+3);
  end;
end;

procedure TMainForm.imAusgabeMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i,j: Integer;
begin
  imAusgabe.Canvas.Brush.Color := clBlack;
  for i := 0 to 199 do
    for j:= 0 to 199 do
      if pixels[i, j] = true then
        imAusgabe.Canvas.Ellipse(X+i-3, Y+j-3, X+i+3, Y+j+3);
end;

procedure TMainForm.btEinLoeschenClick(Sender: TObject);
var i,j: Integer;
begin
  for i := 0 to 199 do
    for j := 0 to 199 do
      pixels[i,j] := false;
  imEingabe.Canvas.Brush.Color := clWhite;
  imEingabe.Canvas.Rectangle(0, 0, imEingabe.Width, imEingabe.Height);
end;

procedure TMainForm.imEingabeDblClick(Sender: TObject);
var i,j: Integer;
begin
  for i := 0 to 199 do
    for j := 0 to 199 do
      pixels[i,j] := false;
  imEingabe.Canvas.Brush.Color := clWhite;
  imEingabe.Canvas.Rectangle(0, 0, imEingabe.Width, imEingabe.Height);
end;

procedure TMainForm.btAusLoeschenClick(Sender: TObject);
begin
  imAusgabe.Canvas.Brush.Color := clWhite;
  imAusgabe.Canvas.Rectangle(0, 0, imAusgabe.Width, imAusgabe.Height);
end;

end.