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)