• 添加图片


    系统提供了用文档处理为系统中记录添加文档,这样每条记录可以附加一份说明文档,这个功能用起来比较方便,可是有时候遇到的用户比较不够勤劳,他于是希望不点那个工具栏上的图标,直接就可以看到一些东西,比如产品的图片说明。这个时候就需要添加图片。
    系统是通过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);


    }
    嗯,差不多就这些了.
  • 相关阅读:
    二维动规思想,j 具有明显枚举特征
    二分法题目总结
    最大(小)值最小(大)化 (二分法变形)
    C/ C++ 输入输出流
    正序扫描字符串问题
    React(基础一)_react中的三大属性
    找位置
    STL vector
    STL stack
    打印日期
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/717195.html
Copyright © 2020-2023  润新知