标题:用GDI+绘制的图像生成StdPicture对象
取消只看楼主
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
结帖率:87.5%
已结贴  问题点数:20 回复次数:3 
用GDI+绘制的图像生成StdPicture对象
各位高手:
      用GDI+绘制的图像如何才能直接从内存中生成一个StdPicture对象呢?

因为我用GDI+绘制的图像要导入到一个第三方控件中,而这个第三方控件支持导入StdPicture对象,我想把GDI+绘制好的图像不经存储,直接从内存中生成一个StdPicture对象,这样可以提高效率,如何才能做到?


关于“StdPicture对象”,我在VFP9的帮助中找不到任何信息,所以向大家求助。
搜索更多相关主题的帖子: GDI 绘制 图像 生成 对象 
2018-02-02 20:52
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
回复 2楼 吹水佬
谢谢 吹版!!

是这样的,我需要在FlexCell控件的单元格内放入图片,使用了thisform.FlexCell.Images.AddPicture(Picture, Key)方法。

该方法的参数如下:
Picture:一个StdPicture对象。
Key:字符串表达式,用于指定图片的键,调用Cell对象的SetImage()方法时需要用到此值。需要注意的是,图片组中不能有重复的键。

图片文件是用GDI+自绘的,我以前用的方法是将自绘图像存储为图片,然后用thisform.FlexCell.Images.Add(FilePath, Key)方法添加图片,但这种方法需要先将自绘图像保存为磁盘文件,如果要添加大量的图片,无疑会影响效率,所以,现在我在研究如何将GDI+绘制的图像,不经保存,直接在内存中生成 StdPicture对象,再添加到FlexCell控件的单元格内。

请问,在VFP9.0中,利用 _gdiplus.vcx 类自绘图像如何生成 StdPicture对象? VFP9.0的帮助文件中找不到关于 StdPicture对象 的信息。


[此贴子已经被作者于2018-2-3 14:04编辑过]

2018-02-03 14:00
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
测试了以下代码:
LOCAL oPic
m.oPic = LoadPicture(SYS(5) + SYS(2003) + '\aa.bmp')
Thisform.Image1.PictureVal = m.oPic

我发现:LoadPicture()函数导入图像,就能得到一个供 Image1.PictureVal 属性所需要的“图像对象”。

所以,我的问题可以简化为:用GDI+绘制的图像如何不经存储,直接在内存中生成 Image1.PictureVal 属性所需要的“图像对象”?

测试项目如下:
测试项目.rar (83.52 KB)


[此贴子已经被作者于2018-2-4 13:23编辑过]

2018-02-04 13:22
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
谢谢 吹版!

您的代码示范了获取IPicture接口对象,但是从存盘文件创建的,怎么把用GDI+绘制的图像生成IPicture接口对象呢?

我先研究一下您的代码。

再次感谢!!!
2018-02-05 20:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484603-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.751538 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved