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