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
我在表单上设置了一个 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