Delphi: проблемы с GDI + и градиентной рамкой / прямоугольником

Delphi XE2. Есть форма и рамка.

Форма и кадр с двойной буферизацией . GlassFrame включен.

Я рисую фон кадра и пытаюсь нарисовать прямоугольник, выровненный по правому краю, но у меня есть ошибки. Особенно у меня есть ошибки при изменении размера.

Прямоугольник не нужно рисовать обычным образом от прозрачного до непрозрачного черного цвета. enter image description here

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;

Пожалуйста, помогите мне нарисовать прямоугольник на рамке градиента, как правило, от прозрачного до непрозрачного черного цвета.

5
задан maxfax 13 January 2012 в 03:28
поделиться