Delphi-Quellcode:
procedure modPanel( const PagePanel: TPanel);
var
Rgn: HRGN;
begin
Rgn:= CreateRoundRectRgn(0, 0, PagePanel.width, PagePanel.height, 9, 9);
setWindowRgn(PagePanel.Handle, Rgn, true);
deleteObject( Rgn);
end;
Dashier gibt z.B. einem Panel runde Ecken, du modifizierst also nicht den Canvas, sondern das Fenster selber. Den rest solltest du über die Hilfe, bzw. über die Forensuche zu setWindowRgn herausbekommen.
Gruss
**EDIT**
Mir fällt noch eine Lösung ein:
Delphi-Quellcode:
constructor TDeinButton.Create(AOwner: TComponent);
begin
inherited Create (AOwner);
ControlStyle := ControlStyle - [csOpaque];
end;
DU überschreibst den Constructor und nimmst ihm den csOpaque Controlstyle. Nun wird wann immer der Button gezeichnet wird, das Fenster darunter zuerst gezeichnet. In der Paint/WM_PAINT malst du nun halt nur das was du willst.
Wer später bremst ist eher tot.