☰
diagrams.net 绘图实战:从架构图到工程级文件管理的完整指南
2026/9/25 4:29:39 网站建设 项目流程

1. 先聊聊我为什么一直在用 diagrams.net

在线画图的工具现在不少,但从实际项目交付的角度看,diagrams.net(也就是原来的 draw.io)是我个人最愿意长期踩坑、也最不容易后悔的一个选择。它不是那种打开之后让你眼花缭乱、各种特效拉满的“炫技型”绘图软件,而是把“把图画清楚、把文件管好、把交付做到位”这三件事做到了极致。很多人第一次打开 diagrams.net 会觉得界面有点朴素,甚至有点“上世纪感”,但我恰恰认为这种克制才是它真正的优点:不强制你进入某个云平台、不绑架你的文件格式、不把简单需求复杂化。它就是一个在线画图工具,但同时又支持本地保存和本地打开,你把文件放在自己手里,随时随地能用浏览器继续画。

从需求角度拆一下,diagrams.net 适合谁用呢?如果你要画架构图、流程图、时序图、ER 图、UML 图,甚至简单的思维导图和平面布局图,它都能覆盖。你可以一个人快速出一张方案草图,也可以和团队协作共同维护一套持续更新的架构文档。更重要的是,它天然适合“以代码仓库为基础设施”的团队工作流:绘图文件直接以 XML 格式存放在 Git 里,每次改动都能被 review,能 diff,能回溯。这一点对搞过几年项目的人来说,简直是刚需。我见过太多团队在白板工具里画完图就找不到了,或者导出的 PNG 更新了一版之后旧版还在群里流传,导致文档和图片对不上。diagrams.net 的文件管理思路解决的就是这种长期维护的“脏乱差”问题。

我打算从实际使用中的技巧出发,不讲虚的,把这些年踩过的坑、摸索出来的高效操作、以及真正能提高出图质量的方法整理出来。无论你是刚准备入门的初学者,还是已经画了几百张图的老手,这篇内容应该都能给你一些参考。

2. 打开页面之前:先把这几个基础设置调好

2.1 界面与编辑体验的四个关键调整

很多人打开 diagrams.net 就直接拖形状,拖了半天发现缩放比例不对、网格对不齐、操作手感很怪,最后把问题归咎于工具不好用。其实大部分是因为没有先把界面设置调到适合自己的状态。我建议第一次使用前,花五分钟做四件事。

第一,设置编辑画布的方向和缩放。可以在菜单栏的“视图”里开启“网格”、开启“页面视图”,并且把缩放调整到 100% 到 125% 之间。页面视图的开启非常重要,它能让你在画布上直观看到当前打印或导出页面的边界,避免辛苦画的图跑到页面框之外、导出 PNG 时被裁掉。网格建议保持在 10 像素左右,太小会显得碎,太大又不够精细。

第二,调整形状的默认样式。新建文档后,直接在空白处右键选择“设置样式”,可以预设形状的描边颜色、字体、连接线颜色等。这个动作很多人会直接跳过,但我的经验是,提前把默认样式定为“不填充、细边框、无阴影、黑字”,比反复选中每个形状再改样式节省至少三分之一的时间。像我画架构图的时候喜欢极简黑白风格,设好默认风格之后,所有新拖出来的形状都是统一风格,视觉效果非常干净。

第三,开启“工具 -> 剪贴板”里的“复制样式”和“复制颜色”快捷键确认。这个不是设置项,而是你要记住两个快捷键:Ctrl+Shift+V 是粘贴样式,而不是粘贴内容;Ctrl+Shift+C 是复制样式。用熟了之后,统一所有形状风格的速度会非常快。

第四,调整“文件 -> 属性”里的“绘图画布”背景色。默认白色没问题,但如果要在暗色环境里长时间画图,可以改成深灰或纯黑。不过我要提醒,导出图片时背景色的透明度需要注意,除非是为了展示演示,否则建议导出时统一用纯白或透明,避免深色背景在文档里显得突兀。

2.2 页面与图层规划:画图之前先搭“骨架”

我发现很多人画图喜欢一上来就堆形状,画到一半发现结构不对、需要把一整块内容挪到别处,于是开始痛苦的逐一拖拽。这里我强烈建议养成两个习惯:多页面管理和图层管理。

diagrams.net 支持一个文件里创建多个页面,每个页面相当于一张独立的画布。新建文档后,在左下方的页面栏里右键选择“添加页面”,给每一页起好名字。比如我在画一个系统整体架构时,会拆成“总体拓扑”“服务依赖”“部署流程”“异常链路”四页,每页只聚焦一个主题。这样做的好处是单页复杂度大大降低,形状间距也能保持足够的呼吸感,导出时每页对应一张图,简直是一个天然的文档结构。

图层管理也是很多初级用户完全没碰过的功能。选中任意形状后,点击“图层”面板可以新建图层。图层可以理解为透明的“薄膜”,你把不同类别的形状放在不同薄膜上,然后控制每一层是否显示、是否锁定。典型的用法是:架构图里把“基础设施层”“应用层”“数据层”分成三个图层,需要单独看某一层效果时直接隐藏其他层;或者把标注和注释文字放在一个独立图层,最后导出时隐藏标注层就得到一张干净的成品图。我用图层最多的时候是画网络拓扑图,把物理链路和逻辑链路分在不同图层,排查问题时切换着看,比堆在一张图上清爽太多。

规划好页面和图层,就相当于搭好了骨架。这时候再往里填形状,你会发现整体结构从一开始就是稳定清晰的,后面调整的成本也会降到最低。

3. 画图核心技巧:形状、样式与连接器的底层理解

3.1 形状放置与尺寸控制的几个“隐藏”操作

形状是绘图的最小单元,但大部分人只会做最基础的操作:从左侧形状库拖出来、拖进去、拉伸大小。这里面有几个细节如果我早点知道,早期的效率至少提升一倍。

第一个细节是“按住 Ctrl 拖动”的复制。很多人复制一个形状的习惯是:先 Ctrl+C,再 Ctrl+V,然后把新形状拖到目标位置。其实更快的做法是选中形状后直接按住 Ctrl 并拖动鼠标,松手后会自动生成一个副本,并且新副本会吸附在原位置的网格线上。这个操作在布置服务器图标、模块节点这种重复性很高的场景里,简直是效率翻倍。

第二个细节是“固定比例缩放”。选中形状后直接拖拽四个角上的控制点,默认是自由缩放。但如果按住 Shift 再拖,就会按原有比例缩放。对于服务器、用户、数据库这类图标来说,保持长宽比非常重要,直接拉变形了很影响观感。

第三个细节是“精确尺寸输入”。在右侧“样式”面板的最下方,有一个几何区域,可以直接输入形状的宽高数值。日常画图用鼠标拖差不多就行,但遇到对齐一排等宽的节点时,手输 x 坐标和宽度远比逐个拖拽可靠。比如我要画横向排列的四个模块卡片,宽度统一设为 240,间距统一为 20,我只需要计算好起点坐标,逐个输入即可。出来的效果是像素级的整齐,再配合 Ctrl+Shift+C 复制样式,整个画面会非常专业。

第四个细节是“替换形状”功能。选中形状后在右侧样式面板底部,有一个“替换形状”按钮,点击后可以快速把当前形状换成另一种类型,并且所属的连接线会被保留。这个功能在架构演进时特别有用,比如一开始你用矩形框表示一个模块,后面发现它其实是一个队列,需要换成队列图标,直接替换即可,不用删掉重画、再重新连线。这个功能知道的人不多,但实际用起来非常上瘾。

3.2 样式批量化和自定义主题:让图纸看起来像“一个人画的”

画图技术到了一定阶段,大家拼的不是信息量,而是视觉一致性。如果一张图里有的矩形带阴影、有的不带,有的字体是宋体、有的是黑体,有的线条粗、有的线条细,整个图就会显得杂乱无章,信息传递效率直接打折。我一般用三个方法来保证风格统一。

方法一是批量选中 + 批量设置样式。在空白处按住鼠标左键拖出一个矩形区域,可以一次选中多个形状,然后统一修改字体、颜色、边框、阴影等属性。这个方法最基础,但也最常用。

方法二是利用“编辑 -> 选择 -> 选择所有”或“选择所有边”。如果你只想修改所有矩形,而不想动连接线,可以用这个方式精准选中同类元素。比如画时序图时,把所有的“激活条”统一加粗描边,就靠它。

方法三是自定义样式模板。diagrams.net 的样式是可以通过 CSS 风格的 XML 属性表达的,你可以为某个形状设定一套样式,然后点击样式面板底部的“新建样式”,把它保存为自定义样式。这个有点像给元素起了一个“样式别名”,下次选中其他形状后直接从下拉列表选择这套样式。我经常为一个项目里的“主要节点”“辅助节点”“标注文本”各建立一套样式,画到后期只需要点两下鼠标就能让整张图风格整齐划一。

另外要提醒的是,连接线的描边默认是 2px,但如果你画的是高层级的系统框图,建议统一调成 3px 或 4px;画细节的时序图则保持 1.5px 或 2px。粗线适合表达宏观结构,细线适合表达微观流程。不要在一张图里混得很乱。

3.3 连接器:不只是画线,是在建立“关系”

连接器是绘图里最容易被低估的部分。很多人连着连着就乱了,其实是因为没有理解连接器的核心:它不只是画线,而是在建立“关系”。diagrams.net 的连接器在被拖动时,会智能寻找形状上的绿色“锚点”,当它吸附到锚点上时,这个连接就变成了“粘附”状态,移动其中一个形状时,连接线会自动跟随,不会断掉。

这个粘附行为在架构图里极其重要。比如你画用户请求到负载均衡到后端服务的链路,只要连接线正确地粘附在三个形状上,后续调整形状间距时,连线仍然保持连通,根本不用重画。反过来,如果只是把线画在形状附近的位置上而没有粘附锚点,一拖动就全散了。

连接线的布局方向也有讲究。diagrams.net 提供直线、正交线、曲线等不同的“路径”类型。画技术架构图时,我建议统一使用“正交”路径,也就是横平竖直的那种拐弯方式。这个选择不是审美问题,而是为了让读者对层次关系一目了然:从下往上或从左到右的直角连线天然暗示着一种“流程方向”。如果全用曲线,画面会很艺术,但严肃的技术文档里往往显得过度随意。

在“样式”面板里,连接线还有一个“方向”选项,可以调整出线、入线的方向。默认是自动,但如果你想让一排模块形成规整的总线式连接,需要手动把每条线的出线方向设为上、下、左或右。有一种典型场景是画数据流转图:多个服务的入方向都在顶部,出方向都在底部,如果全部手动调整需要不少耐心。这里提供一个批量技巧:选中所有连接线,在样式中统一设置出入方向,效率会高很多。

4. 模板、库与复用:从 0 到 1 的脚手架搭建

4.1 模板的正确打开方式:先套再改,而不是从零画起

diagrams.net 自带大量内置模板,点击“文件 -> 新建”之后能看到分类清晰的模板库:流程图、UML、线框、架构、思维导图、电路、平面布局等。很多人一看到模板就默认它是“给新手用的”,觉得用了模板就等于偷懒、不够专业。我的观点正好相反:模板最大的价值不在于“直接给你成品”,而在于给出可复用的结构和基础图形组合方式,让你少做很多布局上的决策。

比如画层级架构图时,官方提供一个叫“树状组织结构”的模板,它把父节点、子节点的位置关系、连接线的走向都已经安排得很合理。我在实际项目里常常不是直接用,而是复制模板内容后清掉文字,再填入自己项目的信息。这样至少省了三分钟搭框架的时间。如果你对未来要反复画某一类图,比如每个季度都要输出一次系统架构图,更值得做的是把自己的常用结构存成模板。点“文件 -> 另存为模板”,不出三次,你就拥有了一套完全属于自己的绘图脚手架。

不过模板有一个容易踩的坑:模板自带的样式往往比较“花”。很多内置模板用了彩色渐变、大号阴影、圆角夸张的卡片,如果想要输出极简风格,必须先全选、清除格式、再套用你自己的默认样式。我每次用模板之后第一步就是 Ctrl+A,然后点击样式面板上的“清除格式”,把所有的自带颜色和阴影干掉,再从自己的默认样式开始重新塑造。这一步千万不要省。

4.2 自定义形状库:把自己常用的图标封存下来

比模板更进阶的复用方案是自定义形状库。diagrams.net 左侧面板默认有几个分类,点击面板顶部的“重命名”或“新建”按钮,可以创建一个全新的形状库。然后选中你画好的任何形状(包括形状上挂的连接器和文本标签),按 Ctrl+Shift+Y 或右键选择“复制到库”,就会存到当前库中。

我个人的习惯是维护一个“基础设施图标库”:一张服务器、一摞数据库、队列、网关、缓存、用户终端。每画完一个项目,如果有新的图标设计得不错,我都把它复制到我的自定义库中。积累半年之后,再画新的架构图,几乎所有基础元素都可以直接拖,不再需要从通用符号里挨个找。这个过程很松弛,但带来的复利效应非常大。

有一个细节注意:自定义库的内容默认只属于当前文档,如果需要跨文档使用,需要把库导出为 XML 文件。右键库名,选择“导出集合”,会生成一个.xml文件。下次换设备或新文档时,点击左侧面板的“从文件导入集合”加载它。这样图标资产就和文档一样,跟着文件走,不会丢。

4.3 每次画图都要用的“格式刷”组合拳

除了形状库,还有一套每次画图几乎都要用到的“格式刷组合拳”,我再单独提一下。首先是前面提到的 Ctrl+Shift+C 复制样式和 Ctrl+Shift+V 粘贴样式,它们对所有元素都生效:形状、文本、连接线。其次是“编辑 -> 复制绘图”,整个画布内容会被复制成一张位图,可以直接粘贴到 PPT 或设计软件里,不需要先导出图片再插入,省掉一个文件环节。

另一个很容易被忽略的组合键是“Ctrl+Shift+方向键”,可以对选中的形状进行微调,每次移动一个像素,很适合做精细化布局。我自己在画完一通之后,经常用这个功能把边缘差几个像素的方块逐一拉齐。虽然网格和对齐参考线能帮你解决大部分问题,但总有网格无法满足的微小偏移,这时候逐像素微调是最后一道兜底。

5. 文件管理、导出格式与多人协作的细节心法

5.1 保存文件时到底该用什么格式

diagrams.net 的默认文件格式是.drawio,本质上是一个 XML 文件。这里我强烈建议大家把它当成一个“纯文本工程文件”来管理,而不是像普通的图片文件那样随手乱存。因为只有保存为.drawio,你才能继续双击编辑、继续维护版本。如果你只导出了 PNG 或者 PDF,那这张图就成了一次性物品,后续改一版还要重新画一遍。

如果你打算把绘图文件放进 Git 仓库,有一个非常关键的选项:点“文件 -> 属性”,勾选“压缩文件”关闭。默认情况下.drawio文件是压缩存储的,放进 Git 之后 diff 出来完全是乱码,没法 review。改成不压缩之后,文件以可读的 XML 存储,review 代码变更时可以看到加了一个节点、改了一个文字属性。这个习惯对于所有把架构图当作工程资产维护的团队来说都极其重要,我甚至见过不少团队要求提交 PR 时必改架构图,而正是这个“关闭压缩”的选项,让架构图真正纳入了代码评审体系。

另外补充一个导出格式选择的经验:做内部交付记录,导出 PNG 就够了,注意选择 2 倍缩放或者更高倍率,保证在文档里缩小时依然清晰;做对外展示,导出 PDF 会更稳妥,特别是矢量格式,不会在打印或大屏放映时发虚;如果要在网页里嵌入,可以导出 SVG,它还支持元素 retain 独立的层级结构,放大缩小都无损。

5.2 嵌入网页、Notion 或 Wiki 的具体操作

diagrams.net 对于技术团队还有一个极其实用的用法:把绘图文件直接嵌入到网页、Wiki 或 Notion 里。

先说最简单的嵌入方式。diagrams.net 官网提供一个源码嵌入模式:你把.drawio文件保存在任意网址,然后用<iframe>标签把它嵌入到页面中,访问者可以直接在页面内编辑并保存。如果你用的是 Notion,可以把.drawio文件传到任意图床或 GitHub Pages,然后用/embed块嵌入链接。Notion 会渲染出一个可交互的绘图容器,团队里任何人打开都能直接编辑,不需要安装任何软件。

如果你是做内部 Wiki(比如 Confluence、Docusaurus),更推荐的方式是使用官方提供的 VS Code 插件或开源渲染组件。VS Code 里装上“Draw.io Integration”插件,可以直接在编辑器里打开.drawio文件,随改随存,不需要切到浏览器。配合 Git 分支管理,同一个文件多人改、合并、冲突提示,整个流程就跟改代码一样顺畅。这种方式我认为是 diagrams.net 对比大多数在线绘图白板的最大杀手锏:它敢于把绘图文件降级成文本,从而让管理和协作的复杂度大幅降低。

5.3 多人同时编辑的冲突坑

diagrams.net 支持多人协作,但我要提醒一个实际情况:它不像很多现代白板工具那样做到实时的毫秒级同步。在 Web 端共享编辑时,它依赖保存动作的合并,两个人同时编辑同一个文件时可能会有冲突提示。所以我的协作方案通常是:一个团队共用一个存储源(比如 GitHub 仓库或云盘上的同一份文件),但是让所有人“按模块认领页面”,避免同时编辑同一个页面;或者在编辑前口头声明“我现在改第 2 页”。这种方式足够应付绝大多数团队协作场景。

如果你实在需要多人实时编辑同一个文件,优先选 diagrams.net 的线上协作版本,它和云存储的联动更好。但仍要注意,过于频繁的多人同时保存可能产生版本覆盖,我个人的建议是:协作时把大图层拆到不同页面和不同图层,从结构上隔离编辑区域,比指望工具帮你自动防冲突可靠得多。

6. 常见坑与排查技巧实录

6.1 导出图片边缘被裁掉怎么办

这个问题几乎每个 users 都会遇到一次:辛辛苦苦画了两三个小时,导出 PNG 后发现左右两侧的内容不见了或者被强制缩小。原因很简单,diagrams.net 默认按照“页面尺寸”导出内容,如果一个形状超出了当前页面边界,图形的边缘就会被裁掉。解决办法有两个:要么在“文件 -> 页面设置”里调整页面尺寸,把宽度和高度调大;要么在导出对话框里勾选“忽略页面边界”,让它自动按照所有内容的包围盒导出。第二种方式最省心,导出时只要确认所选内容是所有需要的内容,勾上这个选项,基本不会再出裁切问题。

6.2 中文文字显示异常或导出变方框

diagrams.net 是 Web 应用,文字渲染依赖浏览器字体和操作系统字体。如果你在一台新电脑上打开文件,发现中文全部变成“口口方块”,多半是系统缺少特定字体。解决方式不是换电脑,而是把文字样式中的字体显式指定为一个跨平台安全的字体,比如“微软雅黑”“思源黑体”或“Noto Sans SC”。在样式面板里选中所有文本,统一设置字体。这里我习惯顺手把字体重置为默认值,因为在不同电脑之间同步打开.drawio时,自定义字体很容易出现兼容问题,而统一用系统自带中文字体反而最少踩坑。

6.3 连接线在挪动形状后“拐弯异常”

连接线是自动路由的,但自动路由不代表永远聪明。有时候你把一个形状移动位置后,会发现原本的连线绕了一个很大的弯,甚至穿过了其他形状。出现这种问题时,先别急着删线重画。选中连接线,在样式面板里找到“路径”,切换为“直线”再切回“正交”,强制它重新计算路由。这个方法能解决大部分“拐弯异常”的情况。如果还不行,就把出线、入线的方向手动固定一下。自动路由算法在信息量大的图里确实容易犯傻,手动干预其实是正解,不用对它抱有不切实际的期望。

6.4 快捷键失灵时排查什么

如果你发现快捷键全部失效,比如 Ctrl+C、Ctrl+V、Ctrl+Z 都没反应,通常是输入焦点还停留在一个文本框里,导致浏览器把按键全部当成“输入文本处理”。解决办法很简单:先用鼠标点击画布空白处,让焦点离开文本框,再按快捷键。这个坑尤其容易出现的情况是:你刚刚编辑完一个形状的文字,正准备按 Ctrl+Z 撤销几步操作,结果发现撤销的是文字内容而不是整个图形操作,感觉很困惑。这种情况其实不是 Bug,而是焦点不在画布上,我的习惯是撤销前先按一下 Esc 取消文本框的编辑状态,然后再使用撤销快捷键。

7. 我的实际操作体会与一个小建议

讲了这么多,最后分享一点个人的真实感受。用 diagrams.net 久了,你会慢慢形成一种“画图前先想结构”的意识,因为它天然支持多页面、多图层、可复用的形状库,这些都逼着你以一个工程系统的思路去组织图形,而不是随手涂鸦。这和画在白纸上完全不同。我见过不少同事刚开始嫌它“不够智能”“特效少”,结果画了半个月之后,几乎所有人都收回了那句评价,因为他们发现用 diagrams.net 产出的图纸最耐看、最好维护、也最能经得起反复修改。

如果只给一条建议,那就是:第一次使用就立刻培养“把文件保存在 Git 仓库 + 用 VS Code 插件编辑 + 按页面和图层规划绘图”这个工作流。也许一开始会觉得刻意,但坚持三个项目周期后,你会明显体会到它在长期维护上的巨大优势:每一张图都有版本记录,每一次改动都有迹可循,任何一个节点都可以恢复到历史状态。这种可控感是很多花哨的在线绘图工具完全没有办法提供的。

另一个小技巧我放在最后说:画图结束后,按 Ctrl+Shift+V 把样式全面统一一遍,再导出;导出前再按一次 Ctrl+Shift+C,把画布切到“浏览模式”,快速从头到尾扫一遍,你会发现很多在编辑状态下看不出来的视觉问题。这个检查动作我坚持做了好几年,出过不少干货图,几乎没被打回重画过。工具从来不是画好图的决定因素,但一个好工具加上好习惯,一定能把你的图纸质量提升到新水平。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询