刚学delphi,想做一个雷达盘。用了两个image,一个做背景图,一个画扫描线,用timer触发事件更新
运行的时候图像闪的很厉害,doublebuffered也设为true了。请达人帮忙改一下是图像流畅一点,别闪了
procedure TForm1.OnDraw;
var
  brect : TRect;
  bitmap : TBitmap;
  centerx,centery: Integer;
  radium,pi : Double;
  angleh:integer;
  Toplacex,Toplacey:integer;
//  x,y : Double;
begin
  brect:=rect(0,0,Image1.Width,Image1.Height);
  radium:=252.0;
  pi:=3.14159265;
  centerx:=round(Image1.Width/2);
  centery:=round(Image1.Height/2);
  ScanAngle:=ScanAngle mod (360 div ScanSpeed)+1;
  bitmap:=TBitmap.Create;
  with bitmap do
  begin
    Height :=Image1.Height;
    Width := Image1.Width;
    for angleh:=ScanSpeed*ScanAngle downto ScanSpeed*ScanAngle-ScanWide do
    begin//画扫秒指针
      Toplacex:=trunc(centerx+radium*sin(angleh/180*pi));
      Toplacey:=trunc(centery-radium*cos(angleh/180*pi));
      Canvas.Pen.Color:=rgb(colorvalue,colorvalue,colorvalue);
      Canvas.Pen.Width:=4; //connectted with R
      Canvas.MoveTo(centerx,centery);
      Canvas.LineTo(Toplacex,Toplacey);
      dec(colorvalue,200 div Scanwide);
    end;
  end;
  Image2.Canvas.CopyRect(brect,bitmap.Canvas,brect);
  bitmap.Free;end;