可能是你見過(guò)最好的工程師繪圖指北!!!
閱讀本文大概需要 20?分鐘。
作為一名工程師,繪圖可以說(shuō)是必備的技能。優(yōu)秀的繪圖能力就像寫得一手好字,總能讓你在團(tuán)隊(duì)或者客戶面前閃光,這也是你贏得團(tuán)隊(duì)青睞和客戶贊揚(yáng)的一個(gè)重要能力。

繪圖的過(guò)程其實(shí)是分解任務(wù)和分離關(guān)注點(diǎn)的過(guò)程,它和程序設(shè)計(jì)的過(guò)程幾乎重疊,因此繪圖和程序設(shè)計(jì)是正向相互促進(jìn)的。也就是說(shuō),你在繪圖的過(guò)程中發(fā)現(xiàn)的問(wèn)題很有可能會(huì)在程序中出現(xiàn),你在程序中要面對(duì)的問(wèn)題很有可能在繪圖的過(guò)程中就發(fā)現(xiàn)了,早發(fā)現(xiàn)早處理。
為什么別人畫的圖比我的好看?有什么技巧嗎?畫圖丑是天生的嗎?我能不能通過(guò)短時(shí)間的學(xué)習(xí)繪制出逼格高的程序設(shè)計(jì)圖呢?
繪圖是點(diǎn)、線、面、光影和色彩的融合,想要設(shè)計(jì)出漂亮的圖,可以閱讀設(shè)計(jì)領(lǐng)域的相關(guān)知識(shí),跨界是目前你跟同領(lǐng)域?qū)κ掷_差距的優(yōu)選之一。今天我們就來(lái)學(xué)習(xí)如何畫得一手好圖,畫好圖有哪些技巧和策略,并手把手帶你繪制程序設(shè)計(jì)過(guò)程中常用的時(shí)序圖、流程圖、應(yīng)用分層架構(gòu)圖。
繪圖工具這么多,選擇哪一款?
Processon
ProcessOn[1]?是一個(gè)在線作圖的聚合平臺(tái), 運(yùn)營(yíng)方是北京大麥地信息技術(shù)有限公司。ProcessOn 的繪圖基于瀏覽器,因此它不受操作系統(tǒng)限制,可以跨平臺(tái)操作。ProcessOn 的畫布分為兩大類:思維導(dǎo)圖畫布和自由畫布。思維導(dǎo)圖畫布專注于節(jié)點(diǎn)屬性和關(guān)系的構(gòu)建,圖 1 是思維導(dǎo)圖畫布的模板示例。

自由畫布則給我們提供了盡情揮灑的空間,我們可以在自由畫布中繪制 UML 類圖、功能模塊組合圖、事件流程圖和應(yīng)用架構(gòu)圖等,圖 2 是自由畫布的模板示例。

既然是公司運(yùn)營(yíng),那么肯定需要盈利點(diǎn)了,ProcessOn 產(chǎn)品的價(jià)格分為三個(gè)等級(jí):免費(fèi)版、個(gè)人版和團(tuán)隊(duì)版。圖 3 展示了不同版本的價(jià)格與功能差異。

用戶注冊(cè)登錄后就可以使用免費(fèi)版,雖說(shuō)它限制了單個(gè)賬戶文件數(shù)量,但我們可以通過(guò)邀請(qǐng)好友來(lái)提升文件數(shù)量上限。值得一提的是,一個(gè)文件里可以繪制多幅圖,這樣文件上限的問(wèn)題就緩解了。不過(guò)如果是團(tuán)隊(duì)使用或者商用,建議購(gòu)買個(gè)人版或者團(tuán)隊(duì)版,一方面能夠支持開發(fā)團(tuán)隊(duì)提供更穩(wěn)定的服務(wù)和豐富的功能,另一方面也尊重原創(chuàng)勞動(dòng)。
金山 WPS
WPS 是國(guó)內(nèi)不可多得的優(yōu)秀應(yīng)用,與微軟 Office 辦公套件分庭抗禮且不落下風(fēng),實(shí)在令人佩服。WPS 近年來(lái)也大力發(fā)展除文檔、表格和演示文稿外的附加功能,思維導(dǎo)圖和流程圖兩大模塊爭(zhēng)相上線。圖 4 為 WPS 思維導(dǎo)圖布局模板圖示。

從文件導(dǎo)出的格式(.pos)來(lái)看,WPS 似乎是跟 ProcessOn 合作推出的思維導(dǎo)圖和流程圖模塊。相對(duì)于 ProcessOn 免費(fèi)版的文件數(shù)上限,WPS 更有優(yōu)勢(shì),但是從 WPS 導(dǎo)出圖片時(shí)會(huì)帶有水印。如果是團(tuán)隊(duì)使用,ProcessOn 的多人協(xié)作看起來(lái)更好用。
Diagrams
diagrams 是一款免費(fèi)開源且跨平臺(tái)的繪圖應(yīng)用,支持離線繪圖和在線繪圖。在線繪圖和 ProcessOn 一樣,在瀏覽器中操作即可。值得稱贊的是 diagrams 提供了?macOS、Linux(deb/rpm/snap/AppImage)和?Window?等主流操作系統(tǒng)的桌面應(yīng)用,這意味著我們可以離線繪圖。圖 5 是 diagrams 官網(wǎng)給出的繪制成果圖示。

diagrams 沒(méi)有文件數(shù)量限制,它適配了?Google 云盤、微軟 OneDrive、Atlassian、Dropbox、GitHub、NextCloud?和?蘋果的 iCloud?等云端存儲(chǔ),同時(shí)也支持將文件導(dǎo)出到本地,太棒了!
diagrams 支持自定義的導(dǎo)出縮放,允許我們?cè)趯?dǎo)出時(shí)配置圖片縮放比例,例如 75% 或 300%。導(dǎo)出縮放能夠保證圖片的清晰度,是超清大圖的保證。如果你要印刷設(shè)計(jì)出來(lái)的圖,可以在導(dǎo)出時(shí)設(shè)置 DPI 的值,具體操作會(huì)在后面介紹到。
無(wú)論是 ProcessOn 還是 WPS,導(dǎo)出的圖片(PNG/JPG)都不夠清晰,WPS 甚至還帶有水印。如果想要將 ProcessOn 上的繪圖成果導(dǎo)出為超清圖,那必須先導(dǎo)出為 SVG 格式,在此基礎(chǔ)上通過(guò)其他應(yīng)用轉(zhuǎn)換為 PNG 格式,要求在轉(zhuǎn)換時(shí)設(shè)定圖片縮放比例。在導(dǎo)出圖片文件的清晰度方面,diagrams 完勝。
我之前用過(guò)很長(zhǎng)一段時(shí)間的 ProcessOn,《Python3 反爬蟲原理與繞過(guò)實(shí)戰(zhàn)[2]》這本書創(chuàng)作的時(shí)候書中插圖都是用在 ProcessOn 繪制的。偶然看到了 diagrams,體驗(yàn)過(guò)一次之后就全面轉(zhuǎn)到 diagrams 了。

本篇文章將基于 diagrams 的桌面應(yīng)用,請(qǐng)各位讀者自行前往 diagrams 官網(wǎng)下載適合自己操作系統(tǒng)的桌面應(yīng)用。
小知識(shí):diagrams 還有另外一個(gè)域名,draw.io,當(dāng)你看到其他地方介紹 draw 繪圖工具時(shí),大概率指的就是 diagrams。
布局概覽
打開 diagrams 桌面應(yīng)用,它會(huì)讓我們選擇創(chuàng)建新繪圖或者打開現(xiàn)有繪圖,懸浮窗右下角可以選擇語(yǔ)言。

選擇創(chuàng)建新繪圖后跳轉(zhuǎn)到如下圖所示的畫布類型選擇界面,左側(cè)是不同分類的畫布模板菜單欄,右側(cè)是對(duì)應(yīng)分類的畫布模板。通常我們會(huì)選擇空白框圖模板,如果你目標(biāo)就選擇自己喜歡的模板,點(diǎn)擊右下角藍(lán)色的創(chuàng)建按鈕即可。

我選擇的是地圖分類里面的?mind map?模板,點(diǎn)擊創(chuàng)建按鈕后 diagrams 根據(jù)我的選擇為我打開了如下圖所示的新畫布。

畫布分為 ABCDEF 幾個(gè)區(qū)域,它們對(duì)應(yīng)的功能或者作用分別如下:
?A - 菜單欄,可對(duì)文件或圖形進(jìn)行操作;
?B - 工具欄,可對(duì)畫布或者圖形進(jìn)行操作;
?C - 圖形欄,diagrams 為我們提供的基礎(chǔ)圖形元素和圖形元素?cái)U(kuò)展能力;
?D - 分頁(yè)欄,可以在單個(gè)文件里添加多頁(yè)畫布;
?E - 元素屬性欄,可調(diào)整圖形元素、畫布或文本元素的屬性,例如字體大小、圖形顏色、網(wǎng)格顯隱;
?F - 畫布區(qū),主區(qū)域;
?? diagrams 不會(huì)自動(dòng)保存畫布原文件,在創(chuàng)建文件后按 Ctrl+S 并根據(jù)提示選擇存儲(chǔ)方式和存儲(chǔ)路徑。選擇好原文件的存儲(chǔ)后,后續(xù)我們對(duì)畫布、圖形元素和文字元素的改動(dòng)它才會(huì)自動(dòng)保存。
添加多個(gè)頁(yè)面
你可能會(huì)好奇,這個(gè)分頁(yè)欄的應(yīng)用場(chǎng)景是什么:
?每個(gè)圖一份文件,太多了!?一個(gè)功能模塊(例如登錄)對(duì)應(yīng)的幾個(gè)圖(例如流程設(shè)計(jì)圖、原型草稿、登錄時(shí)序圖),分開存放太難找!?關(guān)聯(lián)功能互相比對(duì),打開多個(gè)窗口太煩人!
正好,D 區(qū)分頁(yè)欄就是為了這些需求量身定制的。你可通過(guò)點(diǎn)擊 D 區(qū)分頁(yè)欄的 + 號(hào)來(lái)增加畫布,也可以通過(guò)點(diǎn)擊 D 區(qū)左側(cè)的菜單按鈕 + 插入頁(yè)面?來(lái)增加畫布。如果想要?jiǎng)h除畫布,那么菜單按鈕 + 刪除?就可以了。
你還可以為每頁(yè)畫布起名字,菜單按鈕 + 重命名。這樣在打開 diagrams 的時(shí)候就知道哪頁(yè)畫布上面畫的是什么,不用一個(gè)個(gè)點(diǎn)擊去看了。
添加更多圖形
如果左側(cè)提供的基礎(chǔ)圖形無(wú)法滿足你的繪圖需求,或者你想要從 diagrams 提供的圖形中尋找靈感時(shí),你可以點(diǎn)擊 C 區(qū)底部的更多圖形選項(xiàng),點(diǎn)擊后彈出如下圖所示的圖形選擇界面。

diagrams 提供了如安卓組件圖形、服務(wù)器組件圖形、云原生圖形、電路圖形等數(shù)十類非常豐富的基礎(chǔ)圖形,找到喜歡的圖形類別后給它打上勾,接著點(diǎn)擊右下角的應(yīng)用按鈕即可。
繪圖基本操作實(shí)踐
要想使用 C 區(qū)的圖形,我們只需要點(diǎn)擊并將其拖拽到 F 區(qū)的畫布上即可,想放到那個(gè)位置就在那個(gè)位置松開鼠標(biāo)。下圖是拖拽矩形到畫布的截圖,由于鼠標(biāo)未松開,畫布上只是顯示虛線的矩形,當(dāng)鼠標(biāo)松開時(shí)顯示的就是我們拖拽的左上角那個(gè)實(shí)線矩形。

如果你想在畫布上再放置一個(gè)矩形,你可以再次拖拽,或者用快捷鍵 Ctrl+C 和 Ctrl+V 復(fù)制剛才那個(gè)矩形,并拖動(dòng)到合適的位置。
如何表達(dá)流程
流程和方向在圖形中是一種重要的表達(dá)方式,例如一個(gè)圖形元素的箭頭指向另一個(gè)圖形元素。在 diagrams 中,我們只需要將鼠標(biāo)移動(dòng)到圖形元素上,它就會(huì)出現(xiàn)如下圖所示的藍(lán)色錨點(diǎn)和淺藍(lán)色四向箭頭。

四向箭頭表示這個(gè)元素可以向四個(gè)方向移動(dòng),藍(lán)色的錨點(diǎn)則是此圖形元素與其他元素關(guān)聯(lián)時(shí)的起點(diǎn)或終點(diǎn)。在上圖淺綠色圓圈蓋住的藍(lán)色點(diǎn)處單擊鼠標(biāo)并向右拖動(dòng),即可在此錨點(diǎn)上生長(zhǎng)出一個(gè)直線箭頭。將鼠標(biāo)的焦點(diǎn)移動(dòng)到右側(cè)矩形上時(shí),右側(cè)矩形也會(huì)出現(xiàn)藍(lán)色錨點(diǎn)和四向箭頭,將鼠標(biāo)焦點(diǎn)置于右側(cè)矩形左邊的錨點(diǎn)處釋放,此時(shí)畫布如下圖所示。

這樣我們就將兩個(gè)不相關(guān)的圖形元素關(guān)聯(lián)到一起了,由于箭頭的存在,這一組圖形元素看起來(lái)像是一個(gè)短的流程。
如果你點(diǎn)擊一個(gè)圖形元素,它會(huì)在四周產(chǎn)生天藍(lán)色的圓點(diǎn),點(diǎn)擊并拖動(dòng)遠(yuǎn)點(diǎn)可改變圖形元素的形狀,例如矩形的寬和高。將鼠標(biāo)焦點(diǎn)移動(dòng)到淺藍(lán)色四向箭頭上時(shí),箭頭會(huì)變成藍(lán)色,點(diǎn)擊箭頭便會(huì)復(fù)制一份相同的圖形元素且以箭頭進(jìn)行關(guān)聯(lián),具體效果如下圖所示。

NPC 提示:更多操作技巧和小知識(shí)可通過(guò)親自動(dòng)手獲得哦。
文字與格式
文字描述本身就具備信息傳遞的屬性,將它用在圖形中會(huì)大大增加信息傳遞能力。以上圖為基礎(chǔ),鼠標(biāo)雙擊矩形便可出現(xiàn)文字輸入框,在左邊的矩形中輸入客戶端、右邊的矩形中輸入服務(wù)端,然后將 C 區(qū)的 Text 元素拖動(dòng)到直線箭頭上方并輸入請(qǐng)求,此時(shí)畫布如下圖所示。

明眼人一看就知道描述的是雙端網(wǎng)絡(luò)交互的請(qǐng)求過(guò)程——客戶端向服務(wù)端發(fā)出網(wǎng)絡(luò)請(qǐng)求。我們可以通過(guò) E 區(qū)的文本面板調(diào)整文字格式,例如字體、加粗、斜體、文字位置、文字書寫方向、文字顏色、透明度等,還可以為文字加上背景色、設(shè)置邊框顏色、調(diào)整文字間距和字體大小。

元素樣式
文字有屬性,圖形元素也有屬性。選中圖形可通過(guò) E 區(qū)的樣式面板和調(diào)整圖形面板更改圖形元素的屬性,例如調(diào)整圖形元素的顏色、更改線條風(fēng)格類型、替換箭頭風(fēng)格類型、為圖形元素設(shè)置陰影、圓角直角切換、手繪風(fēng)格切換和圖形層級(jí)等。了解到這些知識(shí)后,我們可以繪制一個(gè)簡(jiǎn)單的流程圖,通過(guò) E 區(qū)的幾個(gè)屬性面板調(diào)整元素樣式,具體效果如下圖所示。

看上去是不是比之前的圖好看多了?
元素層級(jí)與圖層層級(jí)
在實(shí)際操作中你會(huì)發(fā)現(xiàn),當(dāng)圖形元素重疊在一起的時(shí)候,先放置的圖形元素總是處在后放置的圖形元素下方,后放置的圖形元素會(huì)擋住先放置的圖形元素。
在同一個(gè)畫布當(dāng)中,圖形元素是有層級(jí)的,跟 Photoshop 畫布的層級(jí)相似,也跟我們編程領(lǐng)域中的棧相似。

如上圖所示,淺藍(lán)色、淺紅色和淺綠色的圖形元素堆疊在同一個(gè)位置。由于淺藍(lán)色圖形元素先放置,所以它在最底層。第二個(gè)放置的是淺紅色的圖形元素,它在中間層。最后放置的是淺綠色的圖形元素,所以它在最上層。可以通過(guò) E 區(qū)的調(diào)整圖形面板改變圖形元素的層級(jí),或者直接在圖形元素上右鍵喚出菜單欄,選擇移至最前或則移至最后即可。下圖描述了將淺綠色圖形元素設(shè)置移動(dòng)至最后屬性的位置變化。

原來(lái)的淺綠色將處于最底層,中間層則是淺藍(lán)色,之前在中間層的淺紅色現(xiàn)在到了最上層。
diagrams 支持類似 Photoshop 的圖層,在同一個(gè)畫布當(dāng)中可以有多個(gè)獨(dú)立的圖層。層與層之間有良好的隔離,我們可以將相關(guān)聯(lián)的元素放到同一層,這樣就可以得到像組合和鎖一樣的效果。我們可以在 B 區(qū)工具欄最左側(cè)開啟圖層,開啟后 F 區(qū)彈出圖層設(shè)置面板,點(diǎn)擊?+?號(hào)即可添加圖層。下圖展示了圖層之間的關(guān)系和圖層設(shè)置面板的一些功能。

我們可以為圖層設(shè)定名稱,這有助于我們清晰地梳理自己的構(gòu)思。從圖中可以看到正方體和矩形的位置是重疊的,但誰(shuí)在上面誰(shuí)在下面由圖層決定,而不是像之前一樣由拖放的先后順序或者通過(guò)調(diào)整元素層級(jí)決定,即圖層的層級(jí)優(yōu)先級(jí)高于我們?cè)O(shè)置的元素層級(jí)。
如果你想刪除某個(gè)圖層,只需要選中它,然后點(diǎn)擊圖層設(shè)置面板左下角的垃圾桶圖標(biāo)即可。
看到圖層左側(cè)的鎖圖標(biāo)了嗎?它為我們帶來(lái)圖層級(jí)別的鎖,只要上了鎖,我們就無(wú)法改變?cè)搱D層任何元素的屬性、樣式、排列等,這跟我們后面提到的元素鎖有很大的區(qū)別,圖層鎖的優(yōu)先級(jí)高于元素鎖。
換個(gè)角度思考,層與層之間的隔離像是編程中類的單一原則,這樣我們就可以用面向?qū)ο蟮乃枷脒M(jìn)行構(gòu)圖設(shè)計(jì)。如果你有開發(fā)經(jīng)驗(yàn)?zāi)憔涂梢詫⑽覀兂3B牭降?strong style="box-sizing: border-box;color: rgb(255, 95, 46);line-height: 1.75;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;">約定優(yōu)于配置、組合優(yōu)于繼承等思想應(yīng)用到繪圖這件事上。
導(dǎo)入圖片
Photoshop 、WPS 流程圖和 ProcessOn 都有圖片導(dǎo)入的功能,功能齊備的 diagrams 自然也不遜色。點(diǎn)擊 A 區(qū)菜單欄的調(diào)整圖形菜單,在子面板中選擇插入,再在子面板中選擇圖片即可進(jìn)入圖片選擇環(huán)節(jié),確定選擇后圖片將會(huì)被導(dǎo)入到 diagrams 畫布中。

導(dǎo)入圖片后我們可以根據(jù)需求或者喜好將圖片與 diagrams 的元素結(jié)合起來(lái)。例如導(dǎo)入一段代碼圖示后,使用箭頭和文字為圖片中的代碼添加注釋,導(dǎo)出結(jié)果如下。

這樣看起來(lái),是不是比在瀏覽器中直接看代碼漂亮多了?邏輯也清晰多了?
如果要考慮移動(dòng)端的讀者閱讀文章,那么用圖片代替代碼是優(yōu)選方式。你想想微信公眾號(hào)推文場(chǎng)景,用戶看圖片代碼會(huì)比看長(zhǎng)串的代碼舒服太多了。
文件導(dǎo)出
繪制完圖之后點(diǎn)擊 A 區(qū)菜單欄左上角的文件,然后選擇子菜單中的導(dǎo)出為,再選擇子菜單中的文件格式即可。根據(jù)你的需求,你可以導(dǎo)出 PNG 格式、SVG 格式、PDF 格式甚至是 XML 格式的文件,具體界面如下圖所示。

當(dāng)你選擇好格式后,它還會(huì)彈出一些選項(xiàng)讓你配置。例如選擇圖片格式時(shí)會(huì)彈出圖片對(duì)應(yīng)的配置窗口,我們可以設(shè)置圖片縮放比例、圖片邊框?qū)挾取⑹欠駥⒕W(wǎng)格效果一并導(dǎo)出、是否將陰影效果一并導(dǎo)出導(dǎo)出當(dāng)前文件的單頁(yè)或指定頁(yè)內(nèi)容、是否采用透明背景等,具體界面如下圖所示。

配置之豐富令人滿意。另外,如果你繪制的圖用于印刷,那么它也能滿足你對(duì)高 DPI 的需求。導(dǎo)出時(shí)再子菜單中選擇高級(jí)選項(xiàng)會(huì)彈出入下圖所示的配置界面。

在這里我們就可以設(shè)置想要的 DPI 了。海報(bào)、宣傳單和圖書印刷的 DPI 值通常是 300,如果你追求更好的效果,它也允許你設(shè)置更大的值。
填寫好配置后點(diǎn)擊右下角的導(dǎo)出按鈕,按照指引選擇文件存放位置即可。值得一提的是,導(dǎo)出速度相當(dāng)快,正常大小的圖導(dǎo)出速度在 1 秒內(nèi),圖形元素較多的圖或者 DPI 值較大的圖導(dǎo)出速度可能會(huì)超過(guò) 1 秒,但也慢不到哪里去。
繪圖操作進(jìn)階
經(jīng)過(guò)上面的學(xué)習(xí),你已經(jīng)掌握了 diagrams 桌面應(yīng)用的基本操作,還懂得為元素設(shè)置屬性和不同的樣式。但要想輕松完成繪圖且繪制出更好看的圖,還需要學(xué)習(xí)一些操作技巧。
多元素自動(dòng)對(duì)齊
畫布沒(méi)有自動(dòng)定位和元素對(duì)齊功能,在放置多個(gè)元素后,我們很有可能需要將它們對(duì)齊,以保持美觀和專業(yè)。常用的對(duì)齊有向上對(duì)齊、向下對(duì)齊、垂直居中、左對(duì)齊、右對(duì)齊和水平居中等。
見名知意,向上對(duì)齊、向下對(duì)齊和垂直居中指的是多個(gè)元素對(duì)齊時(shí)所有元素參照最上、最下或者中間元素的位置對(duì)齊,而左對(duì)齊、右對(duì)齊和水平居中則是所有元素參照最左、最右或者中間元素的位置對(duì)齊。下圖描述了多個(gè)高度不一致的元素采用向上對(duì)齊的前后對(duì)比。

可以看到,對(duì)齊后的所有元素參照的是對(duì)齊前最上的位置。如果你對(duì)它的對(duì)齊邏輯還是不太理解,建議你親自動(dòng)手操作一下,聰明的你在幾分鐘就能夠掌握對(duì)齊規(guī)則。
多元素等距排列
很多時(shí)候我們需要在水平方向或者垂直方向放置多個(gè)元素,本著專業(yè)且美觀的出發(fā)點(diǎn),我們會(huì)要求元素們等距排列。這樣的需求通常有兩種辦法:
1、借助頁(yè)面網(wǎng)格可以做到視覺上的等距,例如元素之間間隔 1 個(gè)網(wǎng)格;
2、借助菜單欄中的等距分布選項(xiàng);
在多個(gè)元素相同且大小一致的時(shí)候,采用第 1 種方法也是很直接有效的,但如果元素大小不一或者形狀各不相同,那就不太好操作了。第 2 種方法是借助 diagrams 專門為用戶提供的等距排列工具,只需要選中想要排列的多個(gè)元素,然后點(diǎn)擊菜單欄中的調(diào)整圖形并在子菜單中選擇等距分布,然后按需選擇水平方向或者垂直方向即可。第 2 種方法可以忽略元素大小和形狀,達(dá)到等距排列的目的。多元素水平方向等距排列的具體操作和排列結(jié)果如下圖所示。

要注意的是,等距分布功能選擇的間隔距離是以多個(gè)元素占用的總距離進(jìn)行平均劃分的,并不是根據(jù)兩個(gè)元素之間的最小距離或者最大距離進(jìn)行劃分。
多元素組合
在畫布中,可操作的最小單位是 1 個(gè)元素。如果我們想要操作多個(gè)元素,那么就需要選中它們,再執(zhí)行例如拖拽、改變大小、改變屬性等操作。但是在元素繁多且結(jié)構(gòu)復(fù)雜的畫布中,當(dāng)你需要將相關(guān)聯(lián)的多個(gè)元素拖動(dòng)到另一個(gè)位置的時(shí)候,很容易誤選其他元素或者漏掉某個(gè)元素,這給我們?cè)斐闪艘恍┬÷闊?/p>
選中想要組合的元素后點(diǎn)擊菜單欄的調(diào)整圖形選項(xiàng),在彈出的子菜單中選擇組合即可。上圖給出了組合前后的對(duì)比,可以看出組合前的可操作單位是單個(gè)元素,組合后可操作單位變成了一組元素。如果你想解散某個(gè)組合,那么選擇組合后通過(guò)菜單欄中的調(diào)整圖形>取消組合就可以將它們打散。
看到子菜單中的移除組合了嗎?動(dòng)手試試,看看它有什么作用。
多元素旋轉(zhuǎn)
單個(gè)元素的旋轉(zhuǎn)很簡(jiǎn)單,選中元素后元素的右上角會(huì)出現(xiàn)一個(gè)可旋轉(zhuǎn)的圖標(biāo),鼠標(biāo)懸停在旋轉(zhuǎn)圖標(biāo)后按下并調(diào)整角度便可實(shí)現(xiàn)元素的旋轉(zhuǎn)。多個(gè)元素的旋轉(zhuǎn)有兩種辦法:
1、元素組合,將多個(gè)元素變成一個(gè)可操作單位,此時(shí)一組元素和單個(gè)元素的旋轉(zhuǎn)操作相同;
2、選中多個(gè)元素,通過(guò)調(diào)整圖形>方向>旋轉(zhuǎn)調(diào)整角度,可輸入準(zhǔn)確的旋轉(zhuǎn)角度值;
兩種方法的應(yīng)用場(chǎng)景各不相同,大家使用的時(shí)候根據(jù)需求選擇即可。下圖描述了第 2 種方法的具體操作和旋轉(zhuǎn)結(jié)果。

旋轉(zhuǎn)選項(xiàng)在 A 區(qū)菜單欄的調(diào)整圖形>方向菜單中。
元素鎖
鎖在編程中有很多應(yīng)用場(chǎng)景,在 diagrams 中我們可以借助鎖這個(gè)工具保護(hù)元素或組合,避免在誤操作等場(chǎng)景改變?cè)械脑鼗蚪M合的內(nèi)容、排列方式和所在畫布的位置等。元素的上鎖解鎖在 A 區(qū)菜單欄的編輯菜單下,鎖定和解鎖處于同一個(gè)選項(xiàng)。下圖描述了元素上鎖前后的差異。

鎖定前元素具備可操作屬性,選中后可以改變其樣式、大小等。鎖定后元素不具備可操作屬性,我們無(wú)法調(diào)整內(nèi)容、排列方式和所在畫布的位置,也沒(méi)法刪除這個(gè)元素或者組合。要注意的是,上鎖后仍然可以改變單個(gè)元素的樣式,例如顏色和線條類型。
在畫布中查找
在一個(gè)原文件中可能有多個(gè)元素或者多組元素,查找功能可以幫助我們快速定位到指定的元素或組合。查找的對(duì)象只能是文字元素,無(wú)法查找圖形元素。查找功能在 A 區(qū)的編輯菜單下,選擇查找功能后會(huì)在 F 區(qū)彈出一個(gè)查找選項(xiàng)窗口,我們可以根據(jù)自己的需求設(shè)定查找條件。值得一提的是,它支持所有頁(yè)面的查找,這簡(jiǎn)直太棒了!下圖描述了查找功能的使用和查找結(jié)果的展示。

查找到相關(guān)文字后會(huì)定位到該元素或組合,無(wú)需我們手動(dòng)定位。在有多個(gè)符合條件的場(chǎng)景中,可以通過(guò)查找按鈕在多個(gè)相關(guān)結(jié)果之間跳轉(zhuǎn)。
配色和風(fēng)格讓圖形更具表現(xiàn)力
人靠衣裝馬靠鞍,優(yōu)秀的配色和風(fēng)格選擇不僅能增加圖的表現(xiàn)力,還能讓你和你的團(tuán)隊(duì)看起來(lái)更專業(yè)。逼格高對(duì)于業(yè)務(wù)發(fā)展和團(tuán)隊(duì)形象也是很有幫助的,如果你畫的圖一團(tuán)糟,而競(jìng)爭(zhēng)對(duì)手畫的圖卻顯得很專業(yè),別人能比你多收幾萬(wàn)塊不是沒(méi)有道理的。

能改變映像的手繪風(fēng)格
相比于工具自帶的那些直來(lái)直去的圖形元素來(lái)說(shuō),手繪風(fēng)格給人一種親近、舒適、用心的感覺,從下面這張圖里感受一下。不得不說(shuō),手繪風(fēng)格配網(wǎng)格底紋就像火鍋配牛肚,舒坦!

由于它具備這些貼近閱讀者的屬性,所以手繪風(fēng)格成為了現(xiàn)在 IT 領(lǐng)域知識(shí)付費(fèi)專欄或者教學(xué)素材中常用的風(fēng)格之一,在極客時(shí)間專欄中得以大量應(yīng)用,在 IT 類的書籍中也頻頻登場(chǎng)。
在 diagrams 實(shí)現(xiàn)手繪風(fēng)格很簡(jiǎn)單,選中元素后在右側(cè) E 區(qū)的樣式面板中勾選手繪即可。要注意的是,有一部分基礎(chǔ)圖形是不支持手繪風(fēng)格的,所以在繪圖時(shí)要選擇支持手繪風(fēng)格的圖形元素,這樣就能夠保持整體風(fēng)格統(tǒng)一。
能增強(qiáng)效果的陰影
陰影一直都是圖像設(shè)計(jì)中重要的一種效果增強(qiáng)方。我不是專業(yè)的設(shè)計(jì)人員,因此無(wú)法給出專業(yè)的建議或者看法,但我可以從視覺的角度描述陰影的作用和它所呈現(xiàn)出來(lái)的效果。

上圖由一列手機(jī)圖形元素和一個(gè)顯示器圖形元素構(gòu)成,左側(cè) 5 部手機(jī)圖形和第 6 部帶有陰影和配色的手機(jī)看起來(lái)是不是完全不一樣,有沒(méi)有一種躍然于紙上的感覺?這很像現(xiàn)代 IPS 硬屏顯示器和前些年普通顯示器的差距,你感覺它浮在上面,離你很近。
最右側(cè)的顯示器圖形也設(shè)置了陰影,這讓它看上去更立體,像不像是 2.5D 的圖形?
光和影在設(shè)計(jì)領(lǐng)域一直都是相當(dāng)重要的,利用好光和影能夠讓事物更有活力、更形象、更立體。上面的顯示器圖形只是光和影運(yùn)用中最簡(jiǎn)單的一種,我們拋開開發(fā)者的身份,欣賞一下設(shè)計(jì)師們的作品。


雖然這些都是平面設(shè)計(jì),但在視覺上它們卻是立體的,而且還具備很強(qiáng)的空間感。這是一種普通開發(fā)者難以描述的美感,真的很好看,不是嗎?
配色知識(shí)
說(shuō)到圖,那就一定得聊聊配色。我覺得色彩是人類感知世界多元化的一種途徑,好的色彩搭配會(huì)讓我們覺得心曠神怡,但糟糕的配色會(huì)引起我們的反感。下面兩幅圖,一副用了整體色調(diào)相近的淺色,一副用了整體色調(diào)差異較大的深淺混搭,你覺得哪幅圖看著舒服一些?


雖然這會(huì)受到個(gè)人傾向和風(fēng)格影響,但我覺得大部分讀者會(huì)認(rèn)為第一幅圖看上去更清爽舒服,第二幅圖濃墨重彩不太搭。跟上面聊陰影是一樣的,我不是專業(yè)的設(shè)計(jì)師,無(wú)法給出專業(yè)的建議和看法,但這里準(zhǔn)備了一些設(shè)計(jì)網(wǎng)站上關(guān)于配色的文章,大家可作為參考:
漲姿勢(shì)!為什么有的顏色看起來(lái)非常高檔?[3]
設(shè)計(jì)師的讀書筆記!帶你重新全面認(rèn)識(shí)色彩系列之紅色篇[4]
所謂配色達(dá)人,就是一次出48個(gè)方案[5]
那些用色高手,都做過(guò)這些訓(xùn)練![6]
你的配色看起來(lái)總是不舒服?用這個(gè)策略性配色法則[7]
里面提到了很多關(guān)于色彩搭配的技巧和策略,大家不妨去學(xué)習(xí)學(xué)習(xí),這樣你就能繪制出更美的圖,而且對(duì)自己的審美提升也會(huì)有很大幫助哦。文章中提到的一些配色和策略截圖如下,具體還需你親自去閱讀哦。


配色工具
相信你從上面推薦的配色文章中收獲了不少知識(shí),在實(shí)際應(yīng)用中我們還需要一些輔助工具來(lái)提升設(shè)計(jì)效率或者進(jìn)行一些配色測(cè)試、配色比對(duì)。你看看人家設(shè)計(jì)的圖,和你設(shè)計(jì)的是不是有很大差異?


如果是的話,趕緊去學(xué)習(xí)吧!我的建議還是向?qū)I(yè)人士看齊:
講真,這可能是目前最全的在線配色工具合集了[8]
業(yè)界良心!2015年最優(yōu)秀的20款網(wǎng)站配色方案(附配色工具)[9]
第一波!2020年3月超實(shí)用設(shè)計(jì)工具大合集[10]
16款激發(fā)靈感的配色神器,讓你的創(chuàng)意更出彩![11]
9款關(guān)于配色、PS和網(wǎng)站風(fēng)格的設(shè)計(jì)工具,超級(jí)實(shí)用[12]
繪圖實(shí)戰(zhàn)
能看到這里的讀者,我想肯定是希望能夠切實(shí)提高自己的繪圖水平的,并不是走馬觀花的泛泛之輩。接下來(lái)我將以演進(jìn)的方式手把手帶你繪制開發(fā)過(guò)程中常用的那些圖,如果你想深入學(xué)習(xí) UML 圖的繪制,可以訪問(wèn)我的個(gè)人站點(diǎn)——夜幕鎮(zhèn)岳劍韋世東的技術(shù)日志 asyncins.github.io,上面還有很多免費(fèi)公開的優(yōu)秀技術(shù)專欄呢。

繪制汽車解鎖時(shí)序圖
時(shí)序圖是我們?cè)诔绦蛟O(shè)計(jì)階段常用的一種 UML 交互圖,它通過(guò)描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。它可以表示用例的行為順序,當(dāng)執(zhí)行一個(gè)用例行為時(shí),其中的每條消息對(duì)應(yīng)一個(gè)類操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的觸發(fā)事件。
這里以汽車鑰匙的上鎖和解鎖過(guò)程為例,繪制一幅時(shí)序圖。首先捋清楚參與其中的幾個(gè)角色:鑰匙擁有者、鑰匙、車,由此我們可以畫出如下圖所示的基本結(jié)構(gòu)。

然后我們捋一捋上鎖和解鎖的過(guò)程,鑰匙擁有者按下鑰匙上的按鍵,車鑰匙通過(guò)信號(hào)將鎖信號(hào)傳遞給汽車,汽車根據(jù)鎖的原狀態(tài)作對(duì)應(yīng)狀態(tài)切換,從而實(shí)現(xiàn)上鎖和解鎖的目的。下圖描述了從鑰匙擁有者按下鎖按鍵到汽車改變鎖狀態(tài)的時(shí)序。

在實(shí)際生活中,我們知道汽車鎖狀態(tài)改變時(shí)會(huì)發(fā)出信號(hào)以表示這次操作成功了,類似于 TCP 協(xié)議中的 ACK。汽車發(fā)出的信號(hào)通常是燈光或聲音,信號(hào)的實(shí)際接收者是按下鎖按鍵的鑰匙擁有者,由此我們可以再完善一下這幅時(shí)序圖。

上圖就是完整的汽車上鎖和解鎖時(shí)序圖,你學(xué)會(huì)了嗎?
小提示:在表達(dá)時(shí)序圖角色時(shí),冒號(hào)左邊描述的是角色名稱、右側(cè)描述的是角色,如果冒號(hào)左邊沒(méi)有內(nèi)容則代表這是一個(gè)匿名角色。如果想要更具體一些,可以改為“韋世東:鑰匙擁有者”、“奔馳:汽車”。
繪制流式處理流程圖
配色知識(shí)那個(gè)小節(jié)中用到的圖示描述的就是流式處理,在 Kafka 流式處理的思想中(我沒(méi)看過(guò) Spark 和 Flink 的模型),流式處理是一端作為起始輸入、一端作為最終輸出、中間可以有多個(gè)處理環(huán)節(jié)的一種組合。由此我們可以畫出如下圖所示的基本結(jié)構(gòu)。

然后在中間放置多個(gè)處理環(huán)節(jié),這些處理環(huán)節(jié)實(shí)際上就是一個(gè)個(gè)程序,它們從 Kafka 中獲取數(shù)據(jù),處理完成后又放回去。

上圖就是完整的流式處理流程圖,你學(xué)會(huì)了嗎?
繪制移動(dòng)端應(yīng)用分層架構(gòu)圖
相對(duì)于單個(gè)模塊的時(shí)序圖和簡(jiǎn)單環(huán)節(jié)的流程圖而言,Web 應(yīng)用分層架構(gòu)更復(fù)雜,需要的圖形也更多。假設(shè)我們要用圖表達(dá)一款移動(dòng)端應(yīng)用的架構(gòu)圖,要清晰有條理地展現(xiàn)出整個(gè)系統(tǒng)的最大執(zhí)行單元之間的關(guān)系,你會(huì)怎么做呢?
在已知需求和功能模塊的情況下,我們要做的第一件事就是分層。分層不僅能在繪圖中發(fā)揮重要作用,在軟件開發(fā)和設(shè)計(jì)中也是十分重要的,它能夠讓執(zhí)行單元之間的責(zé)任更清晰明確。我們先來(lái)簡(jiǎn)單粗略的劃分一下:
1.能為用戶提供服務(wù)的視為應(yīng)用層;2.負(fù)責(zé)存儲(chǔ)應(yīng)用數(shù)據(jù)的視為存儲(chǔ)層;
由此我們可以畫出如下圖所示的基本結(jié)構(gòu)。

再來(lái)看看實(shí)際開發(fā)中是否需要加入其他組件,例如提高查詢性能的緩存、削峰填谷的消息隊(duì)列、負(fù)責(zé)請(qǐng)求轉(zhuǎn)發(fā)的網(wǎng)關(guān)等,加上這些組件后圖就變成了下面這樣。

這里你不必深究每個(gè)層級(jí)的具體劃分和層級(jí)名稱,我們先把結(jié)構(gòu)畫出來(lái)。想一想,好像還需要加上監(jiān)控。監(jiān)控對(duì)整個(gè)工程鏈路負(fù)責(zé),它是一套單獨(dú)的組件,不參與分層,放到側(cè)面表示會(huì)更合適。后端的整個(gè)結(jié)構(gòu)就出來(lái)了,這里我們順便把用戶端也補(bǔ)上。

接下來(lái)我們將具體的應(yīng)用補(bǔ)充進(jìn)來(lái),讓整個(gè)程序看起來(lái)更豐滿、更完整。

接著讓我們表達(dá)出更貼近真實(shí)場(chǎng)景的效果,假設(shè)服務(wù)基于 Kubernetes、Redis 采用集群和、MySQL 也采用集群,那么我們可以為它們加上貼切的圖標(biāo)。
一些漂亮的圖形可以在 C 區(qū)更多圖形處添加,上圖的手機(jī)圖形也是這樣添加進(jìn)來(lái)的。

這樣看上去清晰多了,當(dāng)然,我們還可以為這些層級(jí)或者組件設(shè)置底色,用配色增強(qiáng)它們的表現(xiàn)力。

小結(jié)
看完這篇文章,想必你已經(jīng)清晰地了解到繪圖這件事在程序設(shè)計(jì)和你的工程師職業(yè)生涯中能發(fā)揮出的作用有多重要了。
我們現(xiàn)在再回顧一下前面所學(xué)到的知識(shí):
在學(xué)習(xí)完繪圖基本操作之后,你學(xué)了自動(dòng)排列、多元素組合、自動(dòng)對(duì)齊和元素鎖等知識(shí),現(xiàn)在你的繪圖效率比之前高很多。
接著,你又了解到了風(fēng)格對(duì)讀者的影響,并學(xué)會(huì)了使用手繪風(fēng)格。在配色方面,你去閱讀了設(shè)計(jì)領(lǐng)域的一些專業(yè)文章,了解到不同場(chǎng)景、不同配色帶來(lái)的視覺差異,這直接提升了你繪圖的逼格。
最后,你跟著實(shí)際需求的分析和假設(shè),動(dòng)手實(shí)踐繪制了汽車解鎖時(shí)序圖、流式處理流程圖和移動(dòng)端應(yīng)用分層架構(gòu)圖。
現(xiàn)在你已經(jīng)擁有了自己的繪圖思想,并掌握了繪圖操作。接下來(lái)只需要多加練習(xí),將這些技能融入到日常工作當(dāng)中,相信你一定能夠取得更好的成績(jī),設(shè)計(jì)出更貼近業(yè)務(wù)、更美觀的圖。
References
[1]?ProcessOn:?https://processon.com/[2]?Python3 反爬蟲原理與繞過(guò)實(shí)戰(zhàn):?https://item.jd.com/12794078.html[3]?漲姿勢(shì)!為什么有的顏色看起來(lái)非常高檔?:?https://www.uisdc.com/what-make-color-upscale[4]?設(shè)計(jì)師的讀書筆記!帶你重新全面認(rèn)識(shí)色彩系列之紅色篇:?https://www.uisdc.com/designer-review-color-red[5]?所謂配色達(dá)人,就是一次出48個(gè)方案:?https://www.uisdc.com/48-color-matching-plans[6]?那些用色高手,都做過(guò)這些訓(xùn)練!:?https://www.uisdc.com/color-master-training[7]?你的配色看起來(lái)總是不舒服?用這個(gè)策略性配色法則:?https://www.uisdc.com/strategic-color-matching[8]?講真,這可能是目前最全的在線配色工具合集了:?https://www.uisdc.com/best-color-tools-for-web-designers[9]?業(yè)界良心!2015年最優(yōu)秀的20款網(wǎng)站配色方案(附配色工具):?https://www.uisdc.com/trendy-web-color-palettes[10]?第一波!2020年3月超實(shí)用設(shè)計(jì)工具大合集:?https://www.uisdc.com/prototypr-io-toolbox-20[11]?16款激發(fā)靈感的配色神器,讓你的創(chuàng)意更出彩!:?https://www.digitaling.com/articles/272537.html[12]?9款關(guān)于配色、PS和網(wǎng)站風(fēng)格的設(shè)計(jì)工具,超級(jí)實(shí)用:?https://www.digitaling.com/articles/23123.html
感謝文章校對(duì)與潤(rùn)色人員:loco
崔慶才
靜覓博客博主,《Python3網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)》作者
隱形字
個(gè)人公眾號(hào):進(jìn)擊的Coder
長(zhǎng)按識(shí)別二維碼關(guān)注


