聊聊最适合程序员的画图工具

news2024/12/26 0:36:55

画图工具

没问题,直接坦白讲,我用了 2 年的画图工具是:draw.io

我的图解文章里的图片全是在 draw.io 这个工具画的,写了那么久的图解文章,再加上我工作中也有画图的习惯,累计也有在上面画了接近 1000+ 张图片。

选择它的原因很简单,因为是免费的,而且图片的源文件可以直接保存到 Github 的,这样非常方便,相当于直接云备份到了 Github 仓库里。

draw.io 画图工具可以在线画图,或者下载应用,或者作为 visual studio code 插件来使用。

我比较常用的方式是在线画图,就是直接在网站上画图。draw.io 一开始的画图网站地址就是直接在浏览器输入 draw.io 地址后,就会自动进入在线画图工具页面,现在它改版了, 改成重定向到官网地址了,所以现在想进入在线画图工具页面,地址是:

  • https://app.diagrams.net

我们来看看这个画图工具的页面长什么样子,主要分为三个区域,从左往右的顺序是「图形选择区域、绘图区域、属性设置区域」。

图片

其中,最左边的「图形选择区域」可以选择的图案有很多种,常见的流程图、时序图、表格图都有,甚至还可以在最左下角的「更多图形」找到其他种类的图形,比如网络设备图标等。

图片

再来,最右边「属性设置区域」可以设置文字的大小,图片颜色、线条形状等,而我最常用颜色板块是下面这三种,都是比较浅色的,这样看起来舒服些。

图片

图片

基本图形介绍

我常用的一个图形是圆角方块图,它的位置如下图:

图片

但是它默认的颜色过于深色,如果要在方框图中描述文字,则可能看不清楚,这时我会在最右侧的「属性设置区域」把方块颜色设置成浅色系列的。另外,还有一点需要注意的是,默认的字体大小比较小,我一般会调成 16px 大小。

如果你不喜欢上图的带有「划痕」的圆角方块图形,可以选择下图中这个最简洁的圆角方框图形。

图片

这个简洁的圆角方框图形,再搭配颜色,能组合成很多结构图,比如我用过它组成过 CPU Cache 的结构图。

图片

那直角方框图形,我主要是用来组成「表格」,原因自带的表格不好看,也不方便调。

图片

素描风格

image-20221229101336707

比如,我用直角方框图形,画过「不同层级的存储器之间的成本对比表格」。

图片

如果觉得直直的线条太死板,你可以把图片属性中的「Comic」勾上,于是就会变成歪歪扭扭的效果啦,有点像手绘风格,挺多人喜欢这种风格。

比如,我用过这种风格画过 TCP 三次握手流程的图。

图片

方块图形再加上菱形,就可以组合成简单程序流程图了,比如我画过「写直达」缓存更新模型的流程图。

图片

所以,不要小看这些基本图形,只要构思清晰,再基本的图形,也是能构成层次分明并且好看的图。

各种组合画图

基本的图形介绍完后,相信你画一些简单程序流程图等图形是没问题的了,接下来就是各种图形 + 线条的组合的了。

通过一些基本的图形组合,你还可以画出时序图,时序图可以用来描述多个对象之间的交互流程,比如我画过多个线程获取互斥锁的时序图。

图片

再来,为了更好表达零拷贝技术的过程,那么用图的方式会更清晰。

图片

当然,draw.io 这个画图工具,不只有简单图形,还有其他自带的设备类图形。通常我都会这些设备类型的图标来画网络图。

比如,我之前画过路由器寻址的图片。

图片

IP地址的网络号

你要说,我画过最复杂的图,那就是写 TCP 流量控制的时候,把整个交互过程 + 文字描述 + 滑动窗口状况都画出来了,现在回想起来还是觉得累人。

图片

还有好多好多,我就比一一列举了。

图床

我之前用的图床是一套免费的图床,但是踩过坑。

我发现这类免费图床用着用着就不能用了,然后每次迁移图片我都花费很多时间去搞,果然免费就是最贵的

所以,后来我就干脆自己掏钱搞了个图床,在云厂商那买了 OSS 存储服务器,然后在加上 CDN 形成自己的图床。

思维导图工具

我用的思维导图工具是 xmind,是国产的。他们软件的交互设计做的很不错,很简洁明了。

它有很多种风格选择,基本都是五彩的,整体挺好看的。

图片

有意思的地方,这个思维导图工具的右侧会有一些图标图片选择,比如表情图片、标签图片、进度图图片等等。

图片

习惯用思维导图做笔记的同学, xmind 这个思维导图工具是个不错的选择。

另外,我有时会使用 Effie 这个工具来生成思维导图,它本身是一个写作的工具,但是自带一个根据文字内容生成思维导图的功能。

图片

代码贴图工具

如果你想展示你的代码,又苦于源代码的样式不好看,则可以使用一个生成漂亮的代码贴图网站。

地址:https://carbon.now.sh

图片

导出图片后,就一张漂亮的代码展示图。

图片

最后

这两年下来,我感觉至少画了 1000+ 张图了,每一张图其实还是挺费时间的,相信画过图的朋友后,都能体会到这种感觉了。

但没办法,谁叫我是图解工具人呢,画图可以更好的诠释文章内容,但最重要的是,把你们吸引过来了,这是件让我非常高兴的事情,也是让我感觉画图这个事情值得认真做。

文字的分享有局限性,关键还是要你自己动手摸索摸索,形成自己一套画图的方法论,练习的时候可以先从模仿画起,后面再结合工作或文章的需求画出自己心中的那个图。

最后罗列一下,我常用工具:

  • 画图工具:draw.io
  • 思维导图工具:xmind
  • 代码贴图工具:carbon
  • 文章编写工具:typora、语雀

如果你们知道其他不错的画图工具,欢迎留言说一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树形压缩DP——没有上司的舞会

树形压缩DP——没有上司的舞会一、问题描述二、DFS暴搜1、算法思路2、代码实现三、DP做法一、问题描述 二、DFS暴搜 1、算法思路 这道题其实最容易想到的是暴力DFS,然后选出一个最大值。我们平时会在DFS的形参中设置一个变量表示子树的根。但是今天这道题还涉及到…

mysql的事务和锁

【MySQL事务和锁】 学习原文:https://blog.csdn.net/zly03/article/details/127170995 事务四大特性:原子性、一致性、隔离性、持久性,简称ACID MySQL中支持3种不同的存储引擎: MyISAM存储引擎、Memory存储引擎、和InnoDB存储引…

CMake使用外部动态库/静态库和头文件

CMake使用外部动态库/静态库和头文件一、准备工作二、新建一个新的CMake工程三、开始构建四、为target添加共享库五、链接静态库一、准备工作 在博文《使用CMake构建静态库和动态库》中已经介绍了libhello动态库的构建和安装,现在我们看看如何使用这个外部动态库。…

iOS 15.0+ 中 SwiftUI 顶部或底部悬浮功能小面板的极简实现

功能需求 我们有时需要在 App 主视图的顶部或底部固定悬浮放置一个功能视图: 如上图所示,我们将一个列表项目输入小面板按需放在主视图的顶部或底部: 当放置在顶部时,解决了其对导航栏(NavigationView)中 toolbar 内容的遮挡问题;当放置在底部时,考虑到了其对列表最后…

spring boot 实现搜索引擎的设计思想

目录 实现思路 索引模块 预处理 对文档进行分词 搜索模块 实现思路 索引构建模块 搜索模块 数据库模块 索引模块 对于搜索一个东西,我们很自然的能想到遍历去查找。比如我要查找一本书叫 《红楼梦》,那么我直接在所有结果中进行遍历查找&#xff…

druid解析-过滤器详解

druid支持过滤器,可以在获取连接或者调用连接对象的方法时,先调用过滤器,之后再执行底层方法,比如DruidDataSource的getConnection()方法: public DruidPooledConnection getConnection(long maxWaitMillis) throws SQ…

网络安全一哥的奇安信发布了全球高级可持续威胁年度报告 值得学习

声明 本文是学习全球高级持续性威胁 APT 2021年度报告. 下载地址而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 中国境内高级持续性威胁综述 基于中国境内海量DNS域名解析和奇安信威胁情报中心失陷检测(IOC)库的碰撞分析&…

9_1、Java基本语法之常用类String、StringBuffer、StringBuilder的使用

一、String的使用及常用方法 1、概述 String:表示字符串,使用""引起来。 1.1、String类是声明为final的,不可被继承。 1.2、String类实现了Serializable接口,表示字符串支持序列化。 …

【王道操作系统】2.1.3 原语实现对进程的控制

原语实现对进程的控制 文章目录原语实现对进程的控制1.什么是进程控制2.原语实现对进程的控制3.回忆进程的组织4.进程控制大致图解5.进程控制原语的相同点6.进程控制的五种原语1.什么是进程控制 2.原语实现对进程的控制 3.回忆进程的组织 4.进程控制大致图解 这里说明一下调度和…

MySQL【AUTO_INCREMENT 】自增列

使用案例场景再现: 创建一个为test的数据库,为数据库test创建一个数据表student ,其中包含的字段有 id name sex,admission_time,其中要求student表中的人员id必须连续排列。 create database test use test cr…

SCI论文解读复现【NO.1】基于Transformer-YOLOv5的侧扫声纳图像水下海洋目标实时检测

此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮助…

三旗舰焕新发布引领品牌向上 长城汽车登陆2022广州车展

近日,长城汽车携哈弗、魏牌、欧拉、坦克、长城炮以及沙龙六大品牌,登陆第二十届广州国际汽车展览会(以下简称“2022广州车展”)。魏牌全新旗舰蓝山DHT-PHEV、坦克500 PHEV长续航版、大型高性能豪华皮卡山海炮等车型联袂而至&#…

创建静态库存文件 ansible(3)

目录 创建一个名为/home/student/ansible/inventory的静态库存文件如下所示: (1)node1是dev主机组的成员 (2)node2是test主机组的成员 (3)node1和node2是prod主机组的成员 (4&am…

【Qt】控件——QPlainTextEdit使用简单介绍:常用方法及信号、逐行读取编辑框的内容、使用自带的快捷菜单、作为日志显示窗口

Qt控件-QPlainTextEdit使用 参考链接: https://blog.csdn.net/seniorwizard/article/details/109726147; https://blog.csdn.net/seniorwizard/article/details/109726147 文章目录Qt控件-QPlainTextEdit使用QPlainTextEdit控件简单介绍1. 逐行读取文本编辑框的内容…

【PCB专题】什么是金属化孔(PTH)和非金属化孔(NPTH)

计出来的,并不是放在那里好看的,每个不同的孔洞都有其目的。一般来说孔洞越多,PCB的成本也越高。 PCB中的孔类型大体上可以被区分为PTH(Plating Through Hole)电镀导通孔,和NPTH(None Plating Through Hole)非电镀导通孔两大类。这里说的通孔是指从PCB的一面直接贯穿到…

Spark数据倾斜性能调优

目录 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 某个task执行特别慢的情况 某个task莫名其妙内存溢出的情况 查看导致数据倾斜的key的数据分布情况 知识拓展 coalesce 和 repartition 的区别 数据倾斜的解决方案 解决方案一&am…

【哈工大大一年度项目经验与感想】立项篇 中(2021.9.17~2021.11.17)

第四步:立项报告书写 立项报告的目的在于向答辩老师或者投资方阐述你的项目是什么?做什么的?解决什么问题?打算怎么解决这些问题?有什么创新点、特色?目标?所以一篇立项报告正文需要包括以下内容…

21级数据结构考前模拟题

说明: 此试卷为21级数据结构考前模拟题,老师并未给出标准答案,故以下所有答案均为博主给出,并只供参考,不保证其正确性!!! 只更新了部分,还在写题中!&#xf…

同步+异步日志系统(C++实现)

对于一个服务器而言,不论是在调试中还是在运行中,都需要通过打日志的方式来记录程序的运行情况。本文设计的日志系统实现了同步与异步两种功能,原理见下图: 同步日志:日志写入函数与工作线程串行执行,由于涉…

人脸识别与美颜算法实战-基于机器学习的人脸识别

机器学习根据输出的类型一般分为两类,分类和回归。分类的输出一般是离散值,回归输出的值一般是连续的。比如,人脸识别这种就属于分类问题,房价预测一般是一个回归问题。 鸢尾花分类 # -*- coding: UTF-8 -*- # 导入数据集 from sklearn.datasets import load_iris iris =…