Delphi 颜色改变后油漆盒出现故障

Delphi Paint box glitching after color change

我在表单上设置了一个 Paint Box 组件,其 OnPaint 事件如下所示:

procedure TForm1.PBPaint(Sender: TObject);
var
  Bean: TBean;
begin
  PB.Color := [=11=]8800;
  Bean := Snake.Head;
  while not (Bean = Snake.Tail) do
  begin
    PB.Canvas.FillRect(TRect.Create(Bean.x * 30, Bean.y * 30, Bean.x * 30 + 30, Bean.y * 30 + 30));
    Bean := Bean.Next;
  end;
  PB.Canvas.FillRect(TRect.Create(Bean.x * 30, Bean.y * 30, Bean.x * 30 + 30, Bean.y * 30 + 30));
  //PB.Color := [=11=]0055;
  PB.Canvas.FillRect(TRect.Create(Fruit.x * 30, Fruit.y * 30,Fruit.x * 30 + 30,Fruit.y * 30 + 30));
end;

应该将蛇部分渲染为绿色,将水果渲染为红色。 但如果我在用水果填充部分之前改变颜色,那么一切都会变成红色,并开始出现故障。

为什么会发生这种情况,有没有办法让我用不同的颜色填充 2 个区域而不会导致这个问题? 我相信我使用的是最新版本的免费 delphi,如果有帮助的话

您应该设置 canvas 笔刷颜色,

PB.Canvas.Brush.Color := ...              // Yes

不是控件的颜色:

PB.Color := ...                           // No