为什么当Brush.Style是bsFDiagonal时,TDrawGrid.OnDrawCell会绘制黑色背景?

时间:2015-04-07 09:11:53

标签: delphi delphi-xe delphi-xe3

我有以下代码(分配给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,它也始终绘制黑色背景。我也尝试改变笔和字体属性,没有运气。 我在这里想念的是什么?

enter image description here

ps:我已检查过此代码:Diagonal brush style gives me black area。 我没有看到问题和答案之间的区别(除了注释行)和那些不适合我的代码,正如我所提到的,我已经尝试更改Pen属性而没有任何结果。 我想要的只是天蓝色对角线的红色背景。

1 个答案:

答案 0 :(得分:1)

解决了,必须在FillRect:

之前添加SetBKColor()
DrawGrid1.Canvas.Brush.Style:= bsFDiagonal;
DrawGrid1.Canvas.Brush.Color:= clSkyBlue;
SetBkColor(DrawGrid1.Canvas.Handle, ColorToRGB(clRed));
DrawGrid1.Canvas.FillRect(Rect);    

我仍然不知道为什么,但它正在发挥作用。