我在窗体上设置了一个颜料盒组件,其OnPaint事件如下所示:
procedure TForm1.PBPaint(Sender: TObject);
var
Bean: TBean;
begin
PB.Color := $008800;
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 := $000055;
PB.Canvas.FillRect(TRect.Create(Fruit.x * 30, Fruit.y * 30,Fruit.x * 30 + 30,Fruit.y * 30 + 30));
end;它应该将蛇的部分渲染为绿色,将水果渲染为红色。但是如果我在用水果填充之前改变颜色,那么所有的东西都会变成红色,并开始出现毛刺。
为什么会发生这种情况,有没有一种方法可以让我用不同的颜色填充两个区域,而不会导致这个问题?我相信我使用的是最新版本的免费delphi,如果这有帮助的话
发布于 2021-09-22 16:13:36
您应该设置画布笔刷颜色,
PB.Canvas.Brush.Color := ... // Yes不是控件的颜色:
PB.Color := ... // Nohttps://stackoverflow.com/questions/69287421
复制相似问题