1. 程式人生 > >Dynamics AX 中的圖片處理

Dynamics AX 中的圖片處理

 

 

 

 

1.從本地讀取圖片檔案,並判斷格式是否附合要求。

 

 

 

    FilenameFilter filter = [‘Image Files‘,‘*.bmp;*.jpg;*.gif;*.jpeg‘];

    BinData binData = new BinData();

    str extention, path, nameOfFile;

    Container imageContainer ;

    imageFilePathName = WinAPI::getOpenFileName(element.hWnd(),filter,‘‘, "@SYS53008", ‘‘,‘‘);

    if (imageFilePathname && WinAPI::fileExists(imageFilePathName))

    {

        [path, nameOfFile, extention] = fileNameSplit(imageFilePathName);

        if (extention == ‘.jpg‘)

        {

            binData.loadFile(imageFilePathName);

            imageContainer = binData.getData();

 

 

 

        }

        else

        {

            throw error("@SYS89176");

        }

    }

 

 

 

2.將AX中的圖片儲存到本地資料夾

    str path;

    FilenameFilter filter = [‘Image Files‘,‘*.jpg‘];

    CompanyImage companyImage;

    Image image;

    DialogBox dialogBox;

 

 

 

    ;

   

   

        path = WinAPI::getSaveFileName(0,filter,‘‘,‘‘,‘‘,‘filename‘,0);

        if(path)

        {

            image = new Image();

            image.setData(companyImage.Image);

             if(WinAPI::fileExists(path))

            {

                 dialogBox = new DialogBox(DialogBoxType::YesNoBox,strfmt("@HPH243",path),‘‘,‘‘,DialogButton::Yes);

                 if(DialogButton::Yes == dialogBox.retval())

   image.saveImage(path);

     }

     else

  {

  image.saveImage(path);

  }

 }

3.圖片縮放顯示在控制元件上。

  image = new Image();

  image.setData(imageContainer);

 

 

 

            w = image.width()*sel/100;

            h = image.height()*sel/100;

 

 

 

            image.resize(w,h,InterpolationMode::InterpolationModeDefault);

 

 

 

            Photo.image(image); //Photo為bitmap控制元件

4.圖片的剪下,顯示圖片的控制元件視窗不能被其他視窗遮擋。

 Container rect;

 rect = WINAPI::getWindowRect(this.hWnd());//獲取圖片控制元件的螢幕座標

 int left,top;

 left = conpeek(rect,1);

 top = conpeek(rect,2);

 image = new Image();

        image.captureScreen(left,top,width,height);//根據座標和大小進行剪下,該方法同樣可以用來進行螢幕截圖

5.匯出圖片到指定資料夾,適用於批量圖片匯出。

 str path;

 Image image;

 str filename = "test.jpg";

 image = new Image();

 image.setData(imageContainer );

 path = WinAPI::browseForPath(element.hWnd(),‘‘);

 if(substr(path ,strlen(path)-1,1)!="\\")

            path+="\\";//如果選擇的桌面,則要加上\

 path += filename;

 image.saveImage(path);

 

附加: 獲取使用者選中的多條記錄,以EmplTable為例:

 for(emp=EmplTable_ds.getFirst(1) EmplTable_ds.getFirst(1):EmplTable_ds.cursor();emp;emp=EmplTable_ds.getNext())

        {

            //do something

        }

Dynamics AX 中的圖片處理