• <menu id="w2i4a"></menu>
  • logo Visual Paradigm教程
    文檔首頁>>Visual Paradigm教程>>Visual Paradigm教程:如何使用Open API為你的圖表生成圖像映射

    Visual Paradigm教程:如何使用Open API為你的圖表生成圖像映射


    圖像映射功能支持用戶創(chuàng)建指向HTML文檔中特定部分圖片的超級鏈接。使用Open API你可以將Visual Paradigm的圖表導入為圖像文件,并生成帶有圖像映射的HTML文檔。用戶只需要點擊圖表圖像就可以跳轉到你所定義的URL地址。在本文中,將為你展示如何將圖表導出為圖像,并為其生成圖像映射。

    獲取輸出文件夾

    我們首先通過文件選擇器JFileChooser來獲取用戶的輸出文件夾,并指定它為只接收文件夾。

    // Create file chooser for picking the output directory
    JFileChooser fileChooser = ApplicationManager.instance().getViewManager().createJFileChooser();
    fileChooser.setDialogTitle("Specify output folder");
    fileChooser.setDialogType(JFileChooser.DIRECTORIES_ONLY);
    int returnValue = fileChooser.showSaveDialog(null);
    // if user selected a folder then proceed to genrate the image map
    if (returnValue == JFileChooser.APPROVE_OPTION) {
      File outputFolder = fileChooser.getSelectedFile();
      outputFolder.mkdirs();

    將圖表導出為圖像

    當我們獲取到輸出文件夾后,需要將當前的圖表導出為圖像文件并保存到用戶指定的位置。我們可以使用ModelConvertionManager.exportActiveDiagramAsImage來執(zhí)行導出操作,導出的圖像會進行修整以填充周圍的空白空間。這意味著我們從圖表中獲取的圖形坐標不會體現(xiàn)到實際導出圖像的位置。為了獲得修整的偏移量我們在exportActiveDiagramAsImage中引入了java.awt.Point對象。在導出圖像之后,Point對象將會由偏移的X和Y構成,我們可以使用它來計算輸出圖像中元素的移動位置。

    // Create point object to retrieve the trimmed offset between actual diagram and exported diagram 
    Point offsetPoint = new Point();
    // Obtain the ModelConvertionManager
    ModelConvertionManager convertionManager = ApplicationManager.instance().getModelConvertionManager(); 
    // Ask ModelConvertionManager to export active diagram into SVG image to the output folder.
    // The Point object will filled with offset value after export diagram to image. 
    convertionManager.exportActiveDiagramAsImage(new File(outputFolder.getAbsolutePath() + File.separator + "image.png"), 
                            ModelConvertionManager.IMAGE_TYPE_PNG, offsetPoint);

    生成帶有圖像映射的HTML

    在將圖表導入為圖像之后,我們可以開始生成HTML內容和圖像映射,我們將通過創(chuàng)建StringBuffer來保存HTML和圖像映射內容。

    StringBuffer sb = new StringBuffer();
    sb.append("<html><head></head><body>\n");
    sb.append("<img src=\"image.png\" usemap=\"#imgmap\"/>\n");
    sb.append("<map name=\"imgmap\">\n");

    對于我們從圖表中獲得的每個圖形,我們會為它創(chuàng)建一個矩形的映射區(qū)域,然后通過減去偏移量來獲取圖像的實際位置。

    // Loop through all shapes in active diagram
    IShapeUIModel[] shapes = diagram.toShapeUIModelArray();
    if (shapes != null && shapes.length > 0) {
      for (IShapeUIModel shape : shapes) {
        // Create a map area for each shape. 
        // Remember to reduce the trimmed offset when export diagram to image 
        sb.append("<area shape=\"rect\" coords=\"" + (shape.getX() - offsetPoint.getX()) 
                               + "," + (shape.getY() - offsetPoint.getY()) 
                               + "," + (shape.getX() + shape.getWidth() - offsetPoint.getX()) 
                               + "," + (shape.getY() + shape.getHeight() - offsetPoint.getY()) 
                               + "\" href=\"https://www.visual-paradigm.com\">\n");
      }
    }
    // Close the image map and HTML    
    sb.append("</map>\n");    
    sb.append("</body></html>");

    最后我們?yōu)檩敵鑫募A編寫HTML。

    // Write the HTML with image map to file 
    File htmlFile = new File(outputPath + File.separator + "index.html");
    try {
      FileOutputStream fout = new FileOutputStream(htmlFile);
      fout.write(sb.toString().getBytes());
      fout.close();
    } catch (Exception e) {
      e.printStackTrace();
    }

    示例插件

    本文中附帶的示例插件將演示如何將當前活動的圖表導出為帶有圖像映射的HTML。在你將插件部署到Visual Paradigm之后,你可以點擊應用程序工具欄中的plugin按鈕來觸發(fā)它。

    從工具欄中觸發(fā)示例插件

    然后,它會帶來文件選擇器功能以指定輸出文件夾。

    指定輸出文件

    之后,包含圖像映射的HTML連同圖表圖像將會被導出到這個指定的文件夾里。

    生成圖像映射的輸出文件夾

    相關:示例插件的下載地址>>

             Visual Paradigm v14.1下載>>

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();