Delphi 我想画两个与Windows.FillRect重叠的矩形
我想画两个互相叠加的矩形。其中一个我希望它的尺寸(a)比另一个(B)小,这样我就可以看到后面的那个(B)Delphi 我想画两个与Windows.FillRect重叠的矩形,delphi,delphi-xe2,Delphi,Delphi Xe2,我想画两个互相叠加的矩形。其中一个我希望它的尺寸(a)比另一个(B)小,这样我就可以看到后面的那个(B) 您的颜色颠倒了(绘制顺序错误),您的gridCellRect.Left和gridCellRect.Right太窄(8像素),根本不需要调用SetBkMode 此外,gridCellRect-5中有一个错误(它甚至不会编译),并且您从未尝试绘制到gridCellRect1中定义的矩形,即使它这样做了。(对FillRect的第二次调用使用gridCellRect而不是gridCellRect1
您的颜色颠倒了(绘制顺序错误),您的
gridCellRect.Left
和gridCellRect.Right
太窄(8像素),根本不需要调用SetBkMode
此外,gridCellRect-5
中有一个错误(它甚至不会编译),并且您从未尝试绘制到gridCellRect1
中定义的矩形,即使它这样做了。(对FillRect
的第二次调用使用gridCellRect
而不是gridCellRect1
)
下面是一个正确的代码版本,可以帮助您开始:
procedure DrawRectangle(drawDC:HDC;cellBrush:TBrush);
var
gridCellRect, gridCellRect1 :Trect ;
begin
gridCellRect.Top := 75;
gridCellRect.Bottom := 150;
gridCellRect.Left := 125; // Changed left and right to widen
gridCellRect.right := 200;
cellBrush.color := clBlack;
Windows.FillRect(DrawDC, gridCellRect, cellBrush.Handle);
gridCellRect1 := gridCellRect;
gridCellRect1.Top := gridCellRect.Top + 5;
gridCellRect1.Bottom := gridCellRect.Bottom - 5;
cellBrush.color := clAqua;
Windows.FillRect(DrawDC, gridCellRect1, cellBrush.Handle);
end;
测试
procedure TForm1.FormPaint(Sender: TObject);
begin
DrawRectangle(Canvas.Handle, Canvas.Brush);
end;
你真正的问题是什么?你已经知道如何画矩形了。只需画黑色的,然后收缩+偏移矩形,然后画蓝色的。有什么问题?
procedure TForm1.FormPaint(Sender: TObject);
begin
DrawRectangle(Canvas.Handle, Canvas.Brush);
end;