Board logo

Subject: 发现cnWaterImage组件(水波效果处理单元)的BUG,已进行简单修复. [Print This Page]

Author: zgcc    Time: 2009-7-30 23:36     Subject: 发现cnWaterImage组件(水波效果处理单元)的BUG,已进行简单修复.

错误为:
当cnWaterImage的宽度或高度<=0的时候, 程序报错!
简单的用try.. except 修复了一下. 希望作者能重新更新该单元.

错误代码片段如下:
procedure TCnWaterEffect.DrawWater(ALightModifier: Integer; Src, Dst:
  TBitmap);
var
  dx, dy: Integer;
  i, c, x, y: Integer;
  P1, P2, P3: PIntArray;
  PDst: PRGBArray;
  PSrcDot, PDstDot: PRGBTriple;
  BytesPerLine1, BytesPerLine2: Integer;
begin
  // 先将源图复制到目标图,如果有变化的再在后面按点处理
  Src.PixelFormat := pf24bit;
  Dst.PixelFormat := pf24bit;
  BitBlt(Dst.Canvas.Handle, 0, 0, Src.Width, Src.Height, Src.Canvas.Handle, 0, 0, SRCCOPY);
  FScanLineSrc[0] := Src.ScanLine[0]; //位图宽度或高度<=0时出错
  //......


简单修复为:
  try
    FScanLineSrc[0] := Src.ScanLine[0]; //zgcc修复: 位图宽度或高度<=0时出错
  except
    exit;
  end;

-----------------------------
附件为修改之后的单元. 请作者检查并在下一个版本修复该问题.

Attachment: CnWaterEffect.rar (2009-7-30 23:36, 2.95 K) / Download count 565
http://bbs.cnpack.org/attachment.php?aid=669
Author: zjy    Time: 2009-7-31 10:20     Subject: 多谢报告!

已修正为:
procedure TCnWaterEffect.Render(Src, Dst: TBitmap);
begin
  if (FWidth > 0) and (FHeight > 0) then
  begin
    CalcWater;
    DrawWater(FLightModifier, Src, Dst);
  end;
end;
您可以自行修改代码,或从svn中更新,或等待下一版本组件包发布。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0