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 } |