我有以下代码(分配给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);


我仍然不知道为什么,但是它在起作用。

10-05 22:15