Delphi XE2. Có một hình thức & một khung.Delphi: sự cố với GDI + và khung/hình chữ nhật gradient
Biểu mẫu và khung là doublebuffered
. GlassFrame
được bật.
Tôi vẽ nền của khung và cố vẽ hình chữ nhật được căn phải nhưng có lỗi. Đặc biệt là tôi có lỗi trong khi thay đổi kích thước.
Hình chữ nhật không muốn được vẽ bình thường từ trong suốt đến màu đen đục.
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;
Xin hãy giúp tôi để vẽ một hình chữ nhật trên khung Gradient thường từ minh bạch để các màu đen mờ đục.
Cảm ơn! Nhưng đó không phải là điều tôi muốn. Vui lòng tải xuống dự án ở trên và thay đổi kích thước biểu mẫu, bạn sẽ thấy màu sắc của hình chữ nhật thay đổi. – maxfax
Xem cập nhật của tôi. Vẫn còn một hiệu ứng lạ khi bật/tắt khung kính. Cạnh khung bắt đầu từ độ cao 35 trên cả hai mặt với khung kính trên. Dường như là một lỗi trong hệ thống ở đâu đó. –
Các rối loạn chức năng kính hiển vi có thể nhìn thấy rõ hơn nếu bạn bình luận đi các thủ tục PaintWindow, và chuyển đổi khung kính bật/tắt. –