// Getestet mit D4 unter XP

// Mittels der Prozedur "Frame3D" kann man einen 3D-Rahmen zeichnen lassen.
// Allerdings kann man die Prozedur nicht in "FormPaint" einsetzen, um auf
// das Formular zeichnen zu können.

Beispiel:

//uses extctrls; 
 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  rtc: TRect; 
  rand: integer; 
  bm: TBitmap; 
begin 
  rand := 5; 
  Image1.autosize := false; 
  bm := TBitmap.create; 
  bm.loadfromfile('c:\bilder\det.bmp'); 
  Image1.width := bm.width + 2 * rand; 
  Image1.height := bm.height + rand * 2; 
  Image1.canvas.draw(rand, rand, bm); 
  bm.free; 

  rtc := rect(0, 0, Image1.width, Image1.height); 
  Frame3D(Image1.Canvas, rtc, clWhite, $404060, rand); 
end; 
 

// Wenn Sie das Ganze doch in "FormPaint" benötigen, müssen Sie es
// "zu Fuß" programmieren:

procedure Frame3D_p(Canvas: TCanvas; Rect: TRect; 
  TopColor, BottomColor: TColor; Width: Integer); 
var 
  x, y, z, m: integer; 
  pc: TColor; 
begin 
  with canvas do begin 
    m := pen.width; 
    pen.width := 1; 
    pc := pen.color; 
    pen.color := TopColor; 
    for x := 0 to pred(width) do begin 
      z := Rect.Top + x; 
      y := Rect.Left + x; 
      moveto(y, pred(Rect.Bottom - x)); 
      lineto(y, z); 
      lineto(Rect.Right - x, z); 
    end; 
    pen.color := BottomColor; 
    for x := 0 to pred(width) do begin 
      z := pred(Rect.Right - x); 
      y := pred(Rect.Bottom - x); 
      moveto(z, Rect.Top + x); 
      lineto(z, y); 
      lineto(pred(Rect.Left + x), y); 
    end; 
    pen.color := pc; 
    pen.width := m; 
  end; 
end; 
 
procedure TForm1.FormPaint(Sender: TObject); 
begin 
  Frame3D_p(Canvas, rect(200, 10, 300, 110), clWhite, $404060, 5); 
end; 



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke