Delphi XE2. C'è un modulo & una cornice.Delphi: problemi con GDI + e cornice sfumata/rettangolo
Il modulo e il frame sono doublebuffered
. GlassFrame
è abilitato.
Dipingo lo sfondo del riquadro e cerco di disegnare un rettangolo allineato a destra ma con alcuni bug. Soprattutto ho bug durante il ridimensionamento.
Il rettangolo non deve essere disegnato normalmente dalla trasparenza al nero opaco.
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;
Please help me per disegnare un rettangolo sul telaio gradiente normalmente da trasparenza al colore nero opaco.
Grazie! Ma non è quello che voglio. Si prega di scaricare il progetto di cui sopra e ridimensionare il modulo, vedrete che i colori del rettangolo cambiano. – maxfax
Vedere il mio aggiornamento. Ancora uno strano effetto quando accendi/spegni glassframe. I bordi del telaio iniziano intorno all'altezza 35 su entrambi i lati con la cornice di vetro inserita. Sembra essere un bug nel sistema da qualche parte. –
La disfunzione del vetroflo è più visibile se si commenta la procedura di PaintWindow e si attiva/disattiva il glassframe. –