VCLスタイルのウィンドウエレメントを描画するときに、正しくコーナーを描かないと困ります。コーナーが丸みを帯びたスタイルでは、コントロールの境界矩形とスタイルの丸みを帯びたウィンドウコーナーの間に白い背景があります。Delphi XE2スタイルの塗りつぶし
上記画像は、アクアライトスレートを使用して実行されましたが、角を丸くした任意のスタイルは、この同じ問題が表示されます。私は何が欠けていますか?
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;
ですが、私はまたParentBackgroundを試してみました。 csOpaqueが削除されていることを確認してみてください。 –
'StyleServices.DrawElement'メソッドをデバッグして、キャンバスにビットマップを描画する方法を試してみましたか? – RRUZ
真剣に私はテーマエンジンの内部に飛び込むのを避けたいと考えていましたが、誰も良いアイデアを持っていなければ、それは私がしなければならないことです。 –