Ich habe Probleme mit falsch bemalten Ecken beim Zeichnen von VCL-Stil Fensterelemente. Bei Stilen, die abgerundete Ecken haben, bekomme ich einen weißen Hintergrund in dem Raum zwischen dem Begrenzungsrechteck des Steuerelements und der abgerundeten Fensterecke des Stils.Delphi XE2 Stile Malerei
Das war die obere Bild unter Verwendung von Aqua Light Slate laufen, aber jeder Stil mit abgerundeten Ecken wird das gleiche Problem zeigen. Was vermisse ich?
type
TSample = class(TCustomControl)
protected
procedure Paint; override;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
R: TRect;
S: TSample;
begin
R := ClientRect;
InflateRect(R, -20, -20);
S := TSample.Create(Application);
S.Parent := Self;
S.BoundsRect := R;
end;
{ TSample }
procedure TSample.Paint;
var
Details: TThemedElementDetails;
begin
Details := StyleServices.GetElementDetails(twCaptionActive);
StyleServices.DrawParentBackground(Self.Handle, Canvas.Handle, Details, False);
StyleServices.DrawElement(Canvas.Handle, Details, ClientRect);
end;
btw, ich habe auch versucht, Parent: = True, keine Änderung. Habe auch versucht sicherzustellen, dass csOpaque entfernt wird. –
Haben Sie versucht, die 'StyleServices.DrawElement'-Methode zu debuggen, um zu sehen, wie sie die Bitmap in der Zeichenfläche zeichnet? – RRUZ
Ehrlich gesagt hatte ich gehofft zu vermeiden, in die Interna der Themen-Engine einzutauchen, aber wenn niemand bessere Ideen hat, dann muss ich das tun. –