delphi 利用pngimage 单元加载png,问题

zll111111 2012-10-19 10:23:06
如题 delphi7 用pngimage 这个单元加载png 图片的时候 ,会出现 错误,
出问题的时候,代码直接跳到

TPngObject.DrawPartialTrans
中的

case Header.BitmapInfo.bmiHeader.biBitCount of
{R, G, B images}
24:
FOR j := 1 TO H DO
begin
{Process all the pixels in this line}
FOR i := 0 TO W - 1 DO
begin
if Stretch then i2 := trunc(i / FactorX) else i2 := i;
{Optmize when we don磘 have transparency}
if (AlphaSource[i2] <> 0) then
if (AlphaSource[i2] = 255) then
ImageData[i] := pRGBQuad(@ImageSource[i2 * 3])^ ----》 直接跳到这里,
else
with ImageData[i] do
begin
rgbRed := (255+ImageSource[2+i2*3] * AlphaSource[i2] + rgbRed *
(not AlphaSource[i2])) shr 8;
rgbGreen := (255+ImageSource[1+i2*3] * AlphaSource[i2] +
rgbGreen * (not AlphaSource[i2])) shr 8;
rgbBlue := (255+ImageSource[i2*3] * AlphaSource[i2] + rgbBlue *
(not AlphaSource[i2])) shr 8;
end;
end;

然后 往下走之后 ,图片就不能加载,
求解
...全文
8687 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArideLee 2013-12-15
  • 打赏
  • 举报
回复
我们用PNG一般来做水印,有时候也出错
nhconch 2013-08-19
  • 打赏
  • 举报
回复
PNG有很多种格式,TPNGIMAGE会根据色彩深度、透不透明、有没有Alpha通道决定用哪个函数来绘制。 你说的这个函数是用绘制带Alpha通道的,实际应用上没遇到过你说的问题,你检查一下是否用的最新版本。
sololie 2013-08-17
  • 打赏
  • 举报
回复
引用
加载的不是png的图吧? D7 升级到 2010 就自带了.
delphi 2007 就自带了
LastAvengers 2013-08-17
  • 打赏
  • 举报
回复
可以用白色背景的bmp图,把form.transparentColor 设为True , transparentColorvalue 设为ClWihite 可以达到相同的效果。
reverzeng 2013-08-17
  • 打赏
  • 举报
回复
5楼的方法果然强悍,谢谢
rwlin 2013-05-22
  • 打赏
  • 举报
回复
一直用png ,未发现问题,
可以用ps重新转下,重新生成png

5楼的方法我试了下,可以用,但又两个缺点:
1 。转成emf,文件大了好多
2. 产生锯齿。没有了alpha

tahhkj 2013-05-19
  • 打赏
  • 举报
回复
5楼的办法确实可行,很好用
tjs_125 2012-11-08
  • 打赏
  • 举报
回复
不需要用pngimage ,教你一个简单的方法实现delphi 7加载 png 透明图片,需要用到微软的Visio软件。 第一步,建一个visio空文件,将想要的png图片插入Visio中,然后再文件中的另存为,保存为windows图元文件,wmf 格式类型,或者增强型图元文件 emf格式。 第二部,直接将wmf 或emf 格式图片加载到image,delphi 7 中的image是支持wmf与emf格式的文件,并且能够实现透明显示。
haitao 2012-10-20
  • 打赏
  • 举报
回复
使用的是gdiplus吗?
爱蹄子的羊头 2012-10-19
  • 打赏
  • 举报
回复
加载的不是png的图吧?


D7 升级到 2010 就自带了.
zll111111 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
加载的不是png的图吧?


D7 升级到 2010 就自带了.
[/Quote]

加载的全部是 png 的图片 ,我想请问 这段代码 具体的作用是干啥的,
hsfzxjy 2012-10-19
  • 打赏
  • 举报
回复
有pngimage这个东西么。。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧