我有以下代码(分配给DrawGrid1.OnDrawCell事件):
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
DrawGrid1.Canvas.Brush.Style:= bsFDiagonal;
DrawGrid1.Canvas.Brush.Color:= clSkyBlue;
DrawGrid1.Canvas.FillRect(Rect);
end;
即使将DrawGrid1.Color属性设置为clRed,它也始终绘制黑色背景。我也尝试过更改Pen和Font属性,但是没有运气。
我在这里想念什么?
ps:我已经检查了这段代码:Diagonal brush style gives me black area。
我没有看到问题和答案(除了注释行)有什么区别,并且该代码对我不起作用,正如我提到的那样,我已经尝试更改Pen属性而没有任何结果。
我想要的只是带有天蓝色对角线的红色背景。
最佳答案
解决了,必须在FillRect之前添加SetBKColor():
DrawGrid1.Canvas.Brush.Style:= bsFDiagonal;
DrawGrid1.Canvas.Brush.Color:= clSkyBlue;
SetBkColor(DrawGrid1.Canvas.Handle, ColorToRGB(clRed));
DrawGrid1.Canvas.FillRect(Rect);
我仍然不知道为什么,但是它在起作用。