系统是通过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类中的方法,看一下源代码就一目了然了,这里不赘述.{
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);
}
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;
}
上面介绍了如何存入图片,下面说一下如何读取:{
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控件的名字.{
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);
}
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);
}
嗯,差不多就这些了.
{
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);
}