【问题标题】:Delphi Paint box glitching after color changeDelphi Paint box变色后出现故障
【发布时间】:2021-09-22 15:43:13
【问题描述】:

我在表单上设置了一个 Paint Box 组件,其 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;

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

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

【问题讨论】:

    标签: delphi


    【解决方案1】:

    您应该设置画布画笔颜色,

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

    不是控件的颜色:

    PB.Color := ...                           // No
    

    【讨论】:

    • 谢谢!我只是假设这就是它的意思
    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2012-11-24
    • 2012-12-08
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多