CnPack Forum


 
Subject: 发现cnWaterImage组件(水波效果处理单元)的BUG,已进行简单修复.
zgcc
新警察
Rank: 1



UID 42940
Digest Posts 0
Credits 13
Posts 4
点点分 13
Reading Access 10
Registered 2009-7-30
Status Offline
Post at 2009-7-30 23:36  Profile | Blog | P.M. 
发现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
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2009-7-31 10:20  Profile | Site | Blog | P.M. 
多谢报告!

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




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
 




All times are GMT++8, the time now is 2024-11-22 06:59

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.009747 second(s), 9 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP