Delphi XE2. Hay un formulario & un marco.Delphi: problemas con GDI + y gradiente de marco/rectángulo
La forma y el marco son doublebuffered
. GlassFrame
está habilitado.
Pinto el fondo del marco y trato de dibujar un rectángulo alineado a la derecha pero tengo errores. Especialmente tengo errores mientras cambio el tamaño.
El rectángulo no quiere dibujarse normalmente desde la transparencia hasta el color negro 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;
Por favor ayude a que dibuje un rectángulo en el marco de degradado normalmente de transparencia al color negro opaco.
Gracias! Pero no es lo que quiero. Descargue el proyecto anterior y cambie el tamaño del formulario; verá que cambian los colores del rectángulo. – maxfax
Ver mi actualización. Sigue siendo un efecto extraño al encender/apagar el marco de vidrio. Los bordes del marco comienzan alrededor de la altura 35 en ambos lados con el marco de vidrio activado. Parece ser un error en el sistema en alguna parte. –
La disfunción del marco de cristal es más visible si comenta el procedimiento PaintWindow y enciende/apaga el marco de cristal. –