// 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.
|