Delphi XE2フレーム&という形があります。Delphi:GDI +およびグラデーションフレーム/矩形の問題
フォームとフレームはdoublebuffered
です。 GlassFrame
が有効になっています。
フレームの背景をペイントし、右揃えの長方形を描画しようとしましたが、バグがあります。特にサイズ変更中にバグがあります。
矩形は、透明から不透明な黒色に通常描画されることは望ましくありません。
uses ...GDIPAPI, GDIPOBJ...
type
TFrame2 = class(TFrame)
procedure PaintWindow(DC: HDC); override;
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TFrame2.PaintWindow(DC: HDC);
var
R: TGPRect;
pen: TGPPen;
Graphics: TGPGraphics;
linGrBrush: TGPLinearGradientBrush;
begin
R.X := 0;
R.Y := 0;
R.Width := self.Width;
R.Height := self.Height;
Graphics := TGPGraphics.Create(DC);
linGrBrush := TGPLinearGradientBrush.Create(R, MakeColor(255, 120, 248, 253),
MakeColor(255, 200, 216, 250), LinearGradientModeVertical);
Graphics.FillRectangle(linGrBrush, 0, 0, R.Width, R.Height);
linGrBrush.Free;
linGrBrush := TGPLinearGradientBrush.Create(MakePoint(0, 0),
MakePoint(189, 2), MakeColor(0, 0, 0, 0), MakeColor(255, 0, 0, 0));
Graphics.FillRectangle(linGrBrush, R.Width - 189, 79, 189, 2);
linGrBrush.Free;
Graphics.Free;
end;
私は不透明な黒色に透明性から、通常の勾配フレームに四角形を描画するために助けてください。
ありがとうございます!しかし、それは私が望むものではありません。上記のプロジェクトをダウンロードしてフォームのサイズを変更すると、四角形の色が変わるのがわかります。 – maxfax
私の更新を見てください。ガラスフレームのスイッチをオン/オフすると、変な効果が得られます。フレームエッジはガラスフレームがオンの状態で両面の高さ35から始まります。どこかのシステムにバグがあるようだ。 –
PaintWindowプロシージャをコメントアウトしてGlassframeをオン/オフに切り替えると、ガラスフレームの機能不全がより目に見えます。 –