AX2009添加图片
系统提供了用文档处理为系统中记录添加文档,这样每条记录可以附加一份说明文档,这个功能用起来比较方便,可是有时候遇到的用户比较不够勤劳,他于是希望不点那个工具栏上的图标,直接就可以看到一些东西,比如产品的图片说明。这个时候就需要添加图片。
系统是通过window控件来添加图片的,我们有几种方式可以为Widow控件来指定数据来源。
1.直接指定ImageName或者ImageResource属性,其中ImageName只能指定一个物理路径上的文件,ImageResource只能指定AOT上Resource某个节点的ID,其中第一个属性缺乏灵活性,第二个还真没找到办法得到Resources节点下图片的ID,这两个属性俺是不怎么喜欢用的。
2.通过DataSource和DataField两个属性,在DataField属性中指定一个类型为Container的字段,当然图片就保存到该字段下了。
3.通过SysResource这个类读取AOT 中Resoures中的数据,然后通过Window的Imaga()方法赋值到控件上.
综上,Window控件展现的图片可以存放在文件系统中,AOT的Resource(当然这也是存放在文件系统中),数据库中.
下面介绍一下如何将图片存放在AOT中和数据库中.
废话不说了,看代码吧:
1.存放到Resources中
static void ImportImgToAOTResource(Args _args)
{
BinData binData = new BinData();
Container c;
str filePath = @"E:\Personal\Picture\2006-09-08-00.bmp";
;
binData.loadFile(filePath);
c = binData.getData();
SysResource::saveResource("ResourceName","MyPicture.bmp",c);
}
至于SysResource类中的方法,看一下源代码就一目了然了,这里不赘述.
2.存放到数据库中
首先表中要有个Container类型的字段用来存放图片.
static void InsertImaToTable(Args _args)
{
ImageTable imageTable;
BinData binData = new BinData();
Container c;
str filePath = @"E:\Personal\Picture\2006-09-02-01.bmp";
;
binData.loadFile(filePath);
c = binData.getData();
ttsbegin;
imageTable.Image = c;
imageTable.insert();
ttscommit;
}
上面介绍了如何存入图片,下面说一下如何读取:
1.如何从AOT的Resources节点中读取
void ReadImgFromAOTResource()
{
TreeNode resourceNode;
Image img;
Container c;
;
resourceNode = SysResource::getResourceNode("ResourceName");
if(resourceNode)
{
c = SysResource::getResourceNodeData(resourceNode);

img = new Image();
img.setData(c);
WindowControl.image(img);
WindowControl.height(img.height());
WindowControl.width(img.width());


}
else
WindowControl.image(null);


}
其中WindowControl是Window控件的名字.
2. 从数据库中读取
void ReadImgFromTable()
{
ImageTable imageTable;
Image img;
Container c;
;
select Image from imageTable
where imageTable.RecId == 5637144576;

if(imageTable)
{
img = new Image();
img.setData(imageTable.Image);

WindowControl.image(img);
WindowControl.height(img.height());
WindowControl.width(img.width());
}
else
WindowControl.image(null);


}
嗯,差不多就这些了.
系统是通过window控件来添加图片的,我们有几种方式可以为Widow控件来指定数据来源。
1.直接指定ImageName或者ImageResource属性,其中ImageName只能指定一个物理路径上的文件,ImageResource只能指定AOT上Resource某个节点的ID,其中第一个属性缺乏灵活性,第二个还真没找到办法得到Resources节点下图片的ID,这两个属性俺是不怎么喜欢用的。
2.通过DataSource和DataField两个属性,在DataField属性中指定一个类型为Container的字段,当然图片就保存到该字段下了。
3.通过SysResource这个类读取AOT 中Resoures中的数据,然后通过Window的Imaga()方法赋值到控件上.
综上,Window控件展现的图片可以存放在文件系统中,AOT的Resource(当然这也是存放在文件系统中),数据库中.
下面介绍一下如何将图片存放在AOT中和数据库中.
废话不说了,看代码吧:
1.存放到Resources中










2.存放到数据库中
首先表中要有个Container类型的字段用来存放图片.














1.如何从AOT的Resources节点中读取
























2. 从数据库中读取























【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?