java繪製流程圖基本元素,java繪製圖片
由於專案需要,要求對使用者流程進行圖形化展示:使用者對自己的操作通過檢視流程圖一目瞭然。於是進行了一下前期的Java繪圖探索,通過java.awt.Graphics2D對繪製流程圖的基本元素進行了編碼,並將其展示在了jsp頁面上。
首先編寫一個servlet,然後在web.xml中對其進行配置,最後將圖片展示在jsp頁面。
1. 繪圖方法:
- protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
response.setContentType("image/jpeg"
- //繪製寬=480,長=640的圖板
- int width=480,hight=720;
- BufferedImage image = new BufferedImage(width,hight,BufferedImage.TYPE_INT_RGB);
- //獲取圖形上下文,graphics想象成一個畫筆
- Graphics2D graphics = (Graphics2D)image.getGraphics();
- //消除線條鋸齒
-
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- //對指定的矩形區域填充顏色
- graphics.setColor(Color.ORANGE); //GREEN:綠色; 紅色:RED; 灰色:GRAY
- graphics.fillRect(0, 0, 240, 720);
- //對指定的矩形區域填充顏色
- graphics.setColor(Color.PINK);
- graphics.fillRect(240, 0, 240, 720);
- //生成隨機數
- Random random = new Random();
- /*
-
* 畫線 x,y是座標,定義線段的兩個座標點
- */
- graphics.setColor(Color.BLACK);
- int x=100,y=100,x1=100,y1=y;
- graphics.drawLine(x,y,x+x1,y1);
- /*
- *畫出一個折線
- */
- int[] xPoints = {100,100,250,250};
- int[] yPoints = {180,150,150,180};
- graphics.drawPolyline(xPoints, yPoints, 4);
- /*
- * 畫出一個閉合多邊形(三角形)
- */
- int[] xPoints1 = {100,100,200};
- int[] yPoints1 = {240,320,280};
- graphics.drawPolygon(xPoints1, yPoints1, 3);
- /*
- * 畫出一個閉合多邊形(菱形)
- */
- int[] xPoints2 = {240,300,360,300};
- int[] yPoints2 = {280,240,280,320};
- graphics.drawPolygon(xPoints2, yPoints2, 4);
- graphics.setColor(Color.ORANGE);
- graphics.fillPolygon(xPoints2, yPoints2, 4);
- /*
- *繪製一個橢圓形
- */
- graphics.setColor(Color.GREEN);
- int xOval=100,yOval=360;
- graphics.drawOval(xOval, yOval, 100, 100);
- /*
- *繪製一個矩形
- */
- //graphics.setColor(Color.GRAY);//--設定矩形邊框顏色 。GREEN:綠色; 紅色:RED; 灰色:GRAY
- int xRect=240,yRect=360;
- graphics.drawRect(xRect, yRect, 200, 100);
- //設定文字顏色
- graphics.setColor(new Color( 20+random.nextInt(100), 20+random.nextInt(100), 20+random.nextInt(100) ));
- //設定文字內容、位置
- graphics.drawString("直線",100+50,100-5);
- graphics.drawString("折線", 200, 150-5);
- graphics.drawString("空心三角形", 110, 280);
- graphics.drawString("實心菱形", 300-20, 280);
- graphics.drawString("橢圓形", 100+50, 360+50);
- graphics.drawString("矩形", 240+50, 360+50);
- //graphics.drawString("錯誤的背景顏色", 100, 540);
- //graphics.setPaintMode();
- //graphics.translate(400, 600);
- graphics.dispose();//釋放此圖形的上下文並釋放它所使用的所有系統資源
- ImageIO.write(image,"JPEG",response.getOutputStream());
- PrintWriter out = response.getWriter();
- out.flush();
- out.close();
- //super.doGet(request, response);
- }
2. web.xml中配置servlet:
- <servlet>
- <servlet-name>graphics1</servlet-name>
- <servlet-class>hsy.graphics.test.GraphicsServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>graphics1</servlet-name>
- <url-pattern>/servlet/graphics1</url-pattern>
- </servlet-mapping>
3. Jsp頁面中只需如下一句即可展示圖形:
- <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