// Es wird ein Rahmen um ein Image gezeichnet. Dabei wird die innere Fläche
// entsprechend Rahmendicke und gerader oder ungerade Strichbreite ausgeglichen.

// Getestet mit D4 unter Win98

unit rahmen;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private-Deklarationen}
public
procedure zeichnen(breite:integer;Farbe:TColor);
procedure weg;
procedure hin;
end;

var

Form1: TForm1;
const
stiftbreite=2;
da:boolean=false;

implementation

{$R *.DFM}

procedure TForm1.zeichnen(breite:integer;Farbe:TColor);
var z:integer;
begin
z:=ord(not(odd(breite)));
canvas.brush.style:=bsClear;
canvas.pen.width:=breite;
canvas.pen.color:=Farbe;
breite:=breite-(breite div 2);
canvas.rectangle(image1.left-breite,image1.top-breite,
image1.left+image1.width+breite+z,image1.top+image1.height+breite+z);
end;

procedure TForm1.hin;
begin
zeichnen(stiftbreite,clBlue);
da:=true;
end;

procedure
TForm1.weg;
begin
da:=false;
zeichnen(stiftbreite,color);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
if da then hin;
end;


procedure
TForm1.Button1Click(Sender: TObject);
begin
hin;
end;

procedure
TForm1.Button2Click(Sender: TObject);
begin
weg;
end;

end.


Zugriffe seit 6.9.2001 auf Delphi-Ecke