为什么 TDrawGrid.OnDrawCell 在 Brush.Style 是 bsFDiagonal 时绘制黑色背景?
Why does TDrawGrid.OnDrawCell draw black background when Brush.Style is bsFDiagonal?
我有以下代码(分配给 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);
我仍然不知道为什么,但它正在工作。
我有以下代码(分配给 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);
我仍然不知道为什么,但它正在工作。