DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wugangbest
今日帖子: 23
在线用户: 23
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/11/27 23:15:47
标题:
遇到个很奇怪的问题,在Image上写字,保存为文件时总报错 浏览:1137
加入我的收藏
楼主: var
  Image:TImage;
begin
  Image:=TImage.Create(Self);
  try
    Image.Parent:=Self;
    Image.Align:=alClient;
    //Image.SendToBack;
    Image.Picture.LoadFromFile('Z:\A.png');
    Image.Canvas.Brush.Color := clwhite;
    Image.Canvas.Font.Color:=clRed;
    Image.Canvas.TextOut(50,50,'中华人民共和国');
    Image.Picture.SaveToFile('Z:\B.PNG');
  finally
    Image.Free;
  end;
这段代码,在新建一个工程里执行,完全没问题。但在我程序里,完全相同的代码,在保存为b.png时,总报错:
此帖子包含附件:
PNG 图像
大小:4,043B
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/11/27 23:18:23
1楼: 要疯了
此帖子包含附件:
PNG 图像
大小:66.0K
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/11/27 23:25:09
2楼: 新建工程运行就不报错,但有个问题,控件上看不到画上的字,但保存出来的文件里有字。
此帖子包含附件:
PNG 图像
大小:309.5K
----------------------------------------------
-
作者:
男 xjia (xjia) ★☆☆☆☆ -
盒子活跃会员
2020/11/29 15:35:52
3楼: 因为你载入的是PNG,如果你载入的是BMP就没问题
----------------------------------------------
-
作者:
男 lsuper (lsuper) ★☆☆☆☆ -
盒子活跃会员
2020/11/30 10:13:26
4楼: 1、Delphi Image 插件机制,你用了 Png 需要 uses Vcl.Imaging.pngimage
2、拆开你加载过程,你一个函数里 image 改了之后没有刷新 ui 然后 free 了,没来及显示
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2020/11/30 13:39:28
5楼: 用ImageEn,没任何问题
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/11/30 13:57:16
6楼: @3楼:说的没错,载入BMP是没这个问题。
@4楼:1、肯定是已经 uses 了 pngimage的。2、可能是你说的这个原因,不过我关系不大,因为我主要是为了在图片上写字,写完字就保存文件了,那个image都不需要显示出来。

最后,这个报错的问题,用了很low的办法,通过多用一个TImage作为过渡,从源Image.Picture.Graphic里复制图形过来,再在临时Image里写字就可以。将就着先解决需求了。

虽然之前那个报错,我还是没搞明白原因。
----------------------------------------------
-
作者:
男 stlont (龙头老大) ★☆☆☆☆ -
盒子活跃会员
2020/12/2 16:36:23
7楼: 如同jpg,
timage创建时其canvas不可用,
你必须用个bitmap assign,
或用其他方法建立canvas
如果是bitmap就可以直接用canvas

这是很多年前就有的问题,
查查老资料应该有不少讨论
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行132.8125毫秒 RSS