Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: z.B. roundrect und das nötige handle

  Alt 12. Nov 2003, 16:25
Das kann auch nicht gehen.
"Canvas.StretchDraw(Rect, Bitmap);" - Rect gibt die Ecken für das Zeichnen und nicht die Form an.

Es ist aber möglich den Zeichnenbereich für alle Zeichenfunktionen einzuschrenken:
Delphi-Quellcode:
Procedure TForm1.ladebalken(f: Integer);

Var RHandle: HRgn;

Begin
  RHandle := CreateRoundRectRgn(50, 50, 50 + f, 70, 10, 10);
  SelectObject(pb.Canvas.Handle, RHandle);
  DeleteObject(RHandle);

  pb.Canvas.StretchDraw(Rect(50, 50, 50 + f, 70), bild.Picture.BitMap);
End;
Notfalls danach wieder den gesammten Bereich freigeben:
Delphi-Quellcode:
Procedure TForm1.ladebalken(f: Integer);

Var RHandle: HRgn;

Begin
  RHandle := CreateRoundRectRgn(50, 50, 50 + f, 70, 10, 10);
  SelectObject(pb.Canvas.Handle, RHandle);
  DeleteObject(RHandle);

  pb.Canvas.StretchDraw(Rect(50, 50, 50 + f, 70), bild.Picture.BitMap);

  RHandle := CreateRectRgn(0, 0, pb.Width, pb.Height);
  SelectObject(pb.Canvas.Handle, RHandle);
  DeleteObject(RHandle);

  ...

End;

Eine Demo von mir, für's Clipping, findest du dort Durchsichtiges Fenster (nicht Alpha Blend)
$2B or not $2B
  Mit Zitat antworten Zitat