• Dynamics AX 中的图片处理


    1、从本地读取图片文件,并判断格式是否附合要求。

     1 FilenameFilter filter = ['Image Files','*.bmp;*.jpg;*.gif;*.jpeg'];
     2 BinData binData = new BinData();
     3 str extention, path, nameOfFile;
     4 Container imageContainer ;
     5 imageFilePathName = WinAPI::getOpenFileName(element.hWnd(),filter,'', "@SYS53008", '','');
     6 if (imageFilePathname && WinAPI::fileExists(imageFilePathName))
     7 {
     8     [path, nameOfFile, extention] = fileNameSplit(imageFilePathName);
     9     if (extention == '.jpg')
    10     {
    11         binData.loadFile(imageFilePathName);
    12         imageContainer = binData.getData();
    13     }
    14     else
    15     {
    16         throw error("@SYS89176");
    17     }
    18 }

    2、将AX中的图片保存到本地文件夹。

     1 str path;
     2 FilenameFilter filter = ['Image Files','*.jpg'];
     3 CompanyImage companyImage;
     4 Image image;
     5 DialogBox dialogBox;
     6 ;
     7    
     8 path = WinAPI::getSaveFileName(0,filter,'','','','filename',0);
     9 if (path)
    10 {
    11   image = new Image();
    12   image.setData(companyImage.Image);
    13   if (WinAPI::fileExists(path))
    14   {
    15     dialogBox = new DialogBox(DialogBoxType::YesNoBox,strfmt("@HPH243",path),'','',DialogButton::Yes);
    16        if (DialogButton::Yes == dialogBox.retval())
    17          image.saveImage(path);
    18   }
    19   else
    20   {
    21     image.saveImage(path);
    22   }
    23 }

    3、图片缩放显示在控件上。

    1 image = new Image();
    2 image.setData(imageContainer);
    3  
    4 w = image.width() * sel / 100;  //sel为缩放百分比
    5 h = image.height() * sel / 100;
    6  
    7 image.resize(w, h, InterpolationMode::InterpolationModeDefault);
    8  
    9 Photo.image(image); //Photo为bitmap控件

    4、图片的剪切,显示图片的控件窗口不能被其他窗口遮挡。

    1 Container rect;
    2 rect = WINAPI::getWindowRect(this.hWnd());//获取图片控件的屏幕坐标
    3 int left,top;
    4 left = conpeek(rect,1);
    5 top = conpeek(rect,2);
    6 image = new Image();
    7 image.captureScreen(left,top,width,height);//根据坐标和大小进行剪切,该方法同样可以用来进行屏幕截图

    5、导出图片到指定文件夹,适用于批量图片导出。

     1 str path;
     2 Image image;
     3 str filename = "test.jpg";
     4 image = new Image();
     5 image.setData(imageContainer );
     6 path = WinAPI::browseForPath(element.hWnd(),'');
     7 if (substr(path, strlen(path)-1,1) != "\\")
     8   path += "\\"; //如果选择的桌面,则要加上\
     9 path += filename;
    10 image.saveImage(path);
  • 相关阅读:
    ArrayList,HashSet以及HashMap(2019年10月23日)
    (面试题)String,Random,Math 等一些Object对象(2019年10月22日)
    南开大学2014年硕士研究生入学考试高代试题(回忆版)
    南开大学2014年高等代数部分试题解答
    搜集到的数学分析例题(不断更新)
    武汉大学2012年数学分析试题解答
    分析力学复习笔记(更新中)
    电子结构引论读书笔记:第三章-Hartree-Fock近似
    电子结构引论读书笔记:第二章-多电子波函数和算符
    DNA电荷转移:电阻的计算公式 & Marcus电子转移理论
  • 原文地址:https://www.cnblogs.com/Jinnchu/p/2658690.html
Copyright © 2020-2023  润新知