CnPack Forum » CnVCL 组件包 » 发现cnWaterImage组件(水波效果处理单元)的BUG,已进行简单修复.


2009-7-30 23:36 zgcc
发现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;

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

2009-7-31 10:20 zjy
多谢报告!

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

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.