1. 程式人生 > >java繪製流程圖基本元素,java繪製圖片

java繪製流程圖基本元素,java繪製圖片

由於專案需要,要求對使用者流程進行圖形化展示:使用者對自己的操作通過檢視流程圖一目瞭然。於是進行了一下前期的Java繪圖探索,通過java.awt.Graphics2D對繪製流程圖的基本元素進行了編碼,並將其展示在了jsp頁面上。

首先編寫一個servlet,然後在web.xml中對其進行配置,最後將圖片展示在jsp頁面。

1. 繪圖方法:

  1. protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  2.     response.setContentType("image/jpeg"
    );//宣告檔案格式
  3.     //繪製寬=480,長=640的圖板
  4.     int width=480,hight=720;  
  5.     BufferedImage image = new BufferedImage(width,hight,BufferedImage.TYPE_INT_RGB);  
  6.     //獲取圖形上下文,graphics想象成一個畫筆
  7.     Graphics2D graphics = (Graphics2D)image.getGraphics();  
  8.     //消除線條鋸齒
  9.     graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);  
  10.     //對指定的矩形區域填充顏色
  11.     graphics.setColor(Color.ORANGE);    //GREEN:綠色;  紅色:RED;   灰色:GRAY
  12.     graphics.fillRect(00240720);  
  13.     //對指定的矩形區域填充顏色
  14.     graphics.setColor(Color.PINK);    
  15.     graphics.fillRect(2400240720);  
  16.     //生成隨機數
  17.     Random random = new Random();  
  18.     /* 
  19.      * 畫線 x,y是座標,定義線段的兩個座標點 
  20.      */
  21.     graphics.setColor(Color.BLACK);  
  22.     int x=100,y=100,x1=100,y1=y;  
  23.     graphics.drawLine(x,y,x+x1,y1);  
  24.     /* 
  25.      *畫出一個折線 
  26.      */
  27.     int[] xPoints = {100,100,250,250};  
  28.     int[] yPoints = {180,150,150,180};  
  29.     graphics.drawPolyline(xPoints, yPoints, 4);  
  30.     /* 
  31.      * 畫出一個閉合多邊形(三角形) 
  32.      */
  33.     int[] xPoints1 = {100,100,200};  
  34.     int[] yPoints1 = {240,320,280};  
  35.     graphics.drawPolygon(xPoints1, yPoints1, 3);  
  36.     /* 
  37.      * 畫出一個閉合多邊形(菱形) 
  38.      */
  39.     int[] xPoints2 = {240,300,360,300};  
  40.     int[] yPoints2 = {280,240,280,320};  
  41.     graphics.drawPolygon(xPoints2, yPoints2, 4);  
  42.     graphics.setColor(Color.ORANGE);  
  43.     graphics.fillPolygon(xPoints2, yPoints2, 4);  
  44.     /* 
  45.      *繪製一個橢圓形  
  46.      */
  47.     graphics.setColor(Color.GREEN);  
  48.     int xOval=100,yOval=360;  
  49.     graphics.drawOval(xOval, yOval, 100100);  
  50.     /* 
  51.      *繪製一個矩形 
  52.      */
  53.     //graphics.setColor(Color.GRAY);//--設定矩形邊框顏色 。GREEN:綠色;  紅色:RED;   灰色:GRAY
  54.     int xRect=240,yRect=360;  
  55.     graphics.drawRect(xRect, yRect, 200100);  
  56.     //設定文字顏色
  57.     graphics.setColor(new Color( 20+random.nextInt(100),  20+random.nextInt(100),  20+random.nextInt(100) ));  
  58.     //設定文字內容、位置
  59.     graphics.drawString("直線",100+50,100-5);  
  60.     graphics.drawString("折線"200150-5);  
  61.     graphics.drawString("空心三角形"110280);  
  62.     graphics.drawString("實心菱形"300-20280);  
  63.     graphics.drawString("橢圓形"100+50360+50);  
  64.     graphics.drawString("矩形"240+50360+50);  
  65.     //graphics.drawString("錯誤的背景顏色", 100, 540);
  66.     //graphics.setPaintMode();
  67.     //graphics.translate(400, 600);
  68.     graphics.dispose();//釋放此圖形的上下文並釋放它所使用的所有系統資源
  69.     ImageIO.write(image,"JPEG",response.getOutputStream());  
  70.     PrintWriter out = response.getWriter();  
  71.     out.flush();  
  72.     out.close();  
  73.     //super.doGet(request, response);
  74. }  

2. web.xml中配置servlet:

  1. <servlet>
  2.     <servlet-name>graphics1</servlet-name>
  3.     <servlet-class>hsy.graphics.test.GraphicsServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6.     <servlet-name>graphics1</servlet-name>
  7.     <url-pattern>/servlet/graphics1</url-pattern>
  8. </servlet-mapping>

3. Jsp頁面中只需如下一句即可展示圖形:

  1. <spanstyle="white-space:pre"></span><imgid=""style=""src="../servlet/graphics1">

4.頁面圖形展示如下:


現在大家可以看看,充分發揮一下想象力,上圖中是否包含了 ‘泳道’、‘開始節點’、‘結束節點’、’普通節點‘、‘流轉線條’ 、‘描述文字’ 等一系列元素。那麼剩下來的事情就是如何去繪製一個完整的流程圖了,顯然這不是一件簡單的事情,但是有了這些基本的元素,再難應該也是可以繪製出來的。童鞋們,結合自己的專案,充分發揮你的想象力去完成流程圖的繪製吧!

相關推薦

java繪製流程圖基本元素java繪製圖片

由於專案需要,要求對使用者流程進行圖形化展示:使用者對自己的操作通過檢視流程圖一目瞭然。於是進行了一下前期的Java繪圖探索,通過java.awt.Graphics2D對繪製流程圖的基本元素進行了編

Java 異常處理基本規則Java異常處理的基本規範

看了團隊中原來程式碼中的異常處理,心碎了一地,稍微對照阿里巴巴的異常處理規範整理了一遍,準備分享一下,Java的異常處理規範&約束。 一、執行異常的撲捉 不要捕獲   Java  類庫中定義的繼承自 RuntimeException&nbs

Java刪除陣列指定元素並壓縮陣列

定義原陣列和接收結果的陣列 int[] array1 = new int[]{1, 8, 6, 5, 7, 12, 31, 89, 100}; int[] result; printArray(array1); result = resetArray(array

Java查詢陣列重複元素並列印重複元素、重複次數、重複元素位置

面試題查詢重複元素並列印重複次數和重複位置,一頓懵逼,回來死磕寫下來,列印指定重複次數和最大次數,其他在此基礎上可以再更新 package sort;import org.testng.annotations.Test;import sun.org.mozilla.javascript.interna

java介面的基本概述interface與implements

介面的基本概述 介面:拓展功能的。  usb介面.。。 介面的定義格式: interface介面名{     } 介面要注意的事項:     1.介面是一個特殊的類。     2.介面的成員變數預設

Selenium ChromeDriver 自動化測試抓取網頁元素java

Selenium也是一個用於Web應用程式測試的工具。Selenium測試直接在瀏覽器中執行,就像真實使用者所做的一樣。Selenium 測試可以在 Windows、Linux 和 Macinto

redis簡介及其基本操作java訪問redis

println junit4 oid tac 及其 包含 序列 text ring Redis Redis是采用C語言編寫,內存數據存儲。 Redis讀寫速度異常快速,適合做應用緩存 Redis支持字符串、哈希、列表、集合、有序集合結構存儲 Redis支持持久化

Java 9 被無情拋棄Java 8 直接升級到 Java 10!!

nta imageview users auto lease ins parallel tro 幹貨 前幾天寫了一篇 Java 8 即將在 2019 年停止免費向企業提供更新的文章,企圖迫使用戶向更新一代的 Java 版本升級,但讓人遺憾的是,小編今天收到了 Oracle

自定義view繪製階段進度progressBar階段與圖片和文字對齊

  沒用seekbar或者progressbar原生控制元件,通過繪製實現。只講下有用的思想,無關屬性不解釋,也不用看。 主要看onDraw方法程式碼: 繪製背景線,canvas.drawRect線繪製了第一條線,因為需要漸變,可以看到canvas.drawPath是從第

java 匯出 excel 最佳實踐java 大檔案 excel 避免OOM(記憶體溢位) exce

產品需求 產品經理需要匯出一個頁面的所有的資訊到 EXCEL 檔案。 需求分析 對於 excel 匯出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步匯出一個 excel 檔案。 客戶體驗 & 服務效能 客戶體驗 如果匯出的檔案比較大,比如幾十萬條資料,同步匯

(六)java與redis高可用java連線哨兵sentinel原理

先來看下java連線redis主從結構圖: redis主從 需要在java中指定讀和寫redis源,而且是固定的,當主節點宕機之後,整個redis將不能使用,有明顯的單點問題。 使用sentinel哨兵之後為: Senti

Python基礎學習!基本元素數字字串以及變數

判斷資料型別: >>> type(a) <class 'str'> >>> b =5 >>> type(b) <class 'int'> >>> c= 2.3 >>> t

java 匯出 excel 最佳實踐java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架

產品需求 產品經理需要匯出一個頁面的所有的資訊到 EXCEL 檔案。 需求分析 對於 excel 匯出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步匯出一個 excel 檔案。 客戶體驗 & 服務效能 客戶體驗 如果匯出的檔案比較大,比如幾十萬條資料,同步匯

面向對象的三個基本元素五個基本原則

pro mark 基本 ocs color 技術分享 b- ima docs 由於作者不習慣該編輯器,只是貼出上本文的截圖,詳見: https://www.yuque.com/docs/share/3e942cb0-f659-435b-ad0e-5fbd2d4a89e7面

java中package命名規則Java包(package)的命名規範

Java的包名都有小寫單片語成,類名首字母大寫;包的路徑符合所開發的 系統模組的 定義,比如生產對生產,物資對物資,基礎類對基礎類。以便看了包名就明白是哪個模組,從而直接到對應包裡找相應的實現。       由於Java面向物件的特性,每名J

電腦上怎麼繪製流程圖?三分鐘快速繪製流程圖的祕訣

我們在工作生活中經常能看到各式各樣的流程圖。流程圖主要由線條、幾何圖框以及文字構成,根據應用場景分為:業務流程圖、資料流程圖、頁面流程圖等。職場小白也許會認為流程圖是個很複雜的東西,其實啊,它一點也不復雜,聽我向你簡單講講,不用五分鐘就能吃透一張流程圖的畫法了。 上面提到

面向物件的三個基本元素五個基本原則

三個基本元素: 1. 封裝: 封裝是把過程和資料包圍起來,對資料的訪問只能通過已定義的介面。面向物件計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的物件,這些物件通過一個受保護的介面訪問其他物件。2. 繼承: 繼承是一種聯結類的層次模型,並且允許和鼓勵

java IP地址工具類java IP地址獲取java獲取客戶端IP地址

java IP地址工具類,java IP地址獲取,java獲取客戶端IP地址   ================================ ©Copyright 蕃薯耀 2019年1月11日 http://fanshuyao.iteye.com/   impo

java按畫素壓縮生成壓縮圖片

package com.yj.until; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.Buffere

JAVA實現一種排序JAVA類實現序列化的方法(二種)? 如在COLLECTION框架中實現比較要實現什麼樣的接

} 輸出結果: The ArrayList Sort Before: al[0]=79 al[1]=81 al[2]=14 al[3]=100 al[4]=92 al[5]=76 al[6]=5 al[7]=55 al[8]=39 al[9]=36 [79, 81, 14, 100, 92, 76, 5, 5