或许你想要的画图工具在这里
之前文章发布后,有小伙伴问下面的画怎么画的(偷偷告诉你,其实我是用铅笔+水彩笔画的),哈哈,开玩笑了。其实这些图都是用Excalidraw 画出来的。


我们平常不管是工作中,还是在日常写文章,都会接触到不少画图工具。
我们对ProcessOn、draw.io 等这些优秀的画图软件可以说是不陌生了。
自己平常写文章也用它们来画图。可以用来画流程图、思维导图、原型图、组织结构图、网络拓扑图等等。
但是,这些用久了之后吧,感觉画出来的都方方正正的、显得特别正式。当然了,这个要是放到PPT上面用于对产品的讲解、又或是用于述职报告等都是是非常不错的选择。
不过呢,今天呢给你介绍一款非常漂亮小众的手绘画图工具。
听到手绘这个词,你会不会眼前一亮呢。
1 绘图工具比较
我们平常画出来的图大多是这样的


但是,今天我们推荐的这款画图软件,它画出来的图是这样的

啊,这 怎么有点丑,重新画几个。下面看起来好看多了,O(∩_∩)O



这样的风格是不是你喜欢的呢?
2 excalidraw 介绍
Excalidraw 是一款轻量的手绘风格电子白板工具。无论是 Windows / macOS / linux,甚至是手机,打开浏览器就能使用,能简单地画出美观漂亮的流程图、示意图和开发架构图等常用图片。不仅可以画图、还可以作为会议画板使用。
Excalidraw 是一款开源软件,不需要安装、不需要注册就可以免费使用。
GitHub地址:https://github.com/excalidraw/excalidraw
twitter地址:https://twitter.com/excalidraw
目前已经有41.9k star了

作者呢也在持续更新

3 excalidraw 使用
excalidraw 可以直接浏览器打开使用其SaaS版本,或者自己部署 又或者集成到自己软件中
excalidraw 地址:https://excalidraw.com/
浏览器输入地址打开即可使用,使用起来也很简单,都不用去学

3.1 快速绘制基本图形
可以快速绘制 矩形、菱形、椭圆、箭头、线、文字 等基本图形
绘图
3.1.1 矩形、菱形、椭圆绘制
① 绘制图形
选中矩形(快捷键2)或菱形(快捷键3)或椭圆(快捷键4)–>拖动鼠标即可画出各种大小图形
小技巧:选中要绘制的基本图形,按住shift可以绘制正方形、圆形
② 调整边框颜色

② 填充背景


还可以选择填充效果


③ 边框样式

还可以选择边框线条风格

3.1.2 曲线、直线绘制
① 线条绘制
选中箭头(快捷键5)或线条(快捷键6)==>点击创建多个点/拖到创建直线

拖动上图中的紫色小圆点也可以调整线条幅度
② 选择线条样式

3.2 图形对齐
选中需要对齐的图形==>选择对齐方式
上述图形分别左对齐、右对齐后效果
3.4 插入图片
选择插入图片(快捷键9)==> 选择需要插入的图片
3.5 橡皮擦删除元素
选中需要擦除的元素==>点击橡皮擦(快捷键0)擦除元素

3.5 添加个人素材库
上面这些图形还不够用,也可以添加别人绘制好的素材为我所用。
① 点击右上角的素材库

②预览我们需要的素材

③ 添加到素材库

④绘制火柴人

3.6 添加文字
点击文字(快捷键8)==>敲入文字
3.6 导入表格数据
它还有一个很厉害的功能,就是根据excel中的数据生成柱状图、折线图
① 准备数据

②粘贴到Excalidraw

③ 简单表格来了

3.7 实时协作
可以多个人协同绘制。只需要将链接分享给需要协作的用户即可同时编辑
3.8 保存文件
可以将我们绘制好的图保存到本地为.excalidraw 后缀的文件
3.8 导入绘图文件
可以将上一步导出的文件
3.9 导出成图片
可以将绘制好的导出成图片。导出图片…==>选择文件格式(PNG、SVG)


4 本地部署
文章开头我们就说过,
Excalidraw是一个开源项目。我们可以将其从GitHub上clone下来,然后进行本地化部署。
既然有SaaS版本可以在线使用,为啥还要进行本地化部署呢?
不知道小伙伴有没有发现,之前我们插入的文字中,英文是手写体,但中文不是,中文就显得格格不入。

为了解决以上问题我们就可以将代码clone 进行修改,添加字体后编译、部署到Gitee Page 或者GitHub Page。
部署都是免费的,由于Gitee 在国内访问速度还是挺快的 ,所以我们选择Gitee Page 部署。
这个是我部署好的地址:https://xiezhr.gitee.io/excalidraw/
这个是其他博主部署到GitHub Page上的,支持中文手写字体 可以放心使用

由于前端不太熟,本地编译后中文手写字体可以了,但是发布到Gitee Page 后还有点问题。
等后面解决后再出一篇部署相关的,又给自己挖了个坑~ (⊙﹏⊙)

本次内容到此就结束了,各位小伙伴们,我们下期再见~ (●’◡’●)
相关文章:
或许你想要的画图工具在这里
之前文章发布后,有小伙伴问下面的画怎么画的(偷偷告诉你,其实我是用铅笔水彩笔画的),哈哈,开玩笑了。其实这些图都是用Excalidraw 画出来的。 我们平常不管是工作中,还是在日常写文章&#x…...
2023年功能测试还值得入行吗?
前言 鉴于笔者从13年入行IT行业,经历了只有开发没有测试的阶段,经历了14年只要会基本的功能测试在一线就能薪资过万的阶段,经历了17年只要会一点自动化,会一点性能就能蒙骗过面试官的阶段,更经历了19年所有面试官对于…...
2022-2023山东大学机器学习期末回忆及复习建议
2023年第一次闭卷考试,让我们准备时都很无力,不知道试题究竟是什么难度,是否要掌握手推公式还有一些晦涩的知识点之类的,看到试题才发现其实闭卷也有好处,与往年题相比难度下降了不少。 一、名词解释 1、测试集 2、Boo…...
基于ssm框架实现家庭理财收支系统(源码+数据库+文档)
一、项目简介 本项目是一套基于ssm框架实现家庭理财收支系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,…...
MyBatis - 09 - 自定义映射resultMap
文章目录1 准备工作1.1 建表1.2 创建实体类1.3 引出一个问题方案1方案2方案32.完整代码项目结构EmpMapper接口Emp类SqlSessionUtils工具类EmpMapper.xmljdbc.propertieslog4j.xmlmybatis-config.xmlResultMapTest完整代码在后面 1 准备工作 1.1 建表 t_emp 添加测试数据&…...
springBoot常见面试题(2023最新)
目录前言1.谈谈你对springBoot的理解2.为什么使用springBoot或springBoot的优点3. springBoot与springCloud 区别4.springBoot的核心配置文件有哪些,作用是什么5.springBoot配置文件有几种类型,区别是什么6.什么是热部署?springBoot怎么实现热…...
YOLOv5全面解析教程⑤:计算mAP用到的Numpy函数详解
作者 | Fengwen、BBuf 本文主要介绍在One-YOLOv5项目中计算mAP用到的一些numpy操作,这些numpy操作使用在utils/metrics.py中。本文是《YOLOv5全面解析教程④:目标检测模型精确度评估》的补充,希望能帮助到小伙伴们。 欢迎Star、试用One-YOLOv…...
Linux入门---基本指令(下)
这里写目录标题cattacmorelessheadtail一个思考题datecalfindwhichaliaswhereisgrepzip/unziptarbcuname快捷键tabCTRL c上下键CTRLrcat 这个指令的功能就是显示文件里面的内容: 我们首先使用下面的指令往一个文件里面循环输入内容: cnt0; while [ $c…...
mysql基础操作1
-- 创建数据库CREATE DATABASE st0203;-- 删除数据库DROP DATABASE st0203;-- 删除表DROP TABLE dept;-- 创建表CREATE TABLE dept(did int PRIMARY KEY auto_increment COMMENT主键(部门编号),deptName VARCHAR(20) NOT NULL COMMENT部门名称,address V…...
nginx-ingress部署+跨命名空间转发
nginx-ingress部署一、环境信息二、k8s环境搭建三、ingress环境搭建3.1 deploy.yaml文件3.2 service-nodeport.yaml文件四、按照业务建立service及ingress4.1 业务信息4.2 建立service4.3 创建ingress五、验证结果一、环境信息 k8s集群版本:1.23.6ingress版本&…...
耗时1个月整理的网络安全学习路线,不信还有比这更详细的
首先咱们聊聊,学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学习语言上; 2、知识点掌握程度不清楚 对于网络安全…...
ChatGPT进阶-提示词中文版
一、ChatGPT简介 ChatGPT 是 OpenAI 开发的人工智能聊天机器人。该聊天机器人基于 GPT-3.5 语言模型,经过训练可以对用户给出的指令做出详细响应。与其他聊天机器人不同,ChatGPT 可以回答后续问题、求解数学方程式、撰写文本、修复和调试代码以及总结文本…...
Linux 进程:进程状态
目录一、进程状态1.简单分类2.详细分类(1)运行态(2)休眠态[1]可中断休眠态[2]不可中断休眠态(3)停止状态(4)死亡状态(5)僵死状态二、特殊进程1.僵尸进程2.孤儿…...
应用程序性能优化方案,web服务五级缓存优化,服务器性能优化...
winfrom 全局异常捕获WPF 全局异常捕获Asp.Net全局异常捕获MVC 全局异常捕获AspNetNetCore 全局异常捕获一级缓存html/css/js 前端缓存二级缓存Asp.Net MVC AspNetCore 客户端缓存设置三级缓存服务端缓存四级redis 数据库缓存服务端缓存五级sqlserver 数据库缓存设置分布式缓存…...
云计算简介
本文为copy他人编写的文档,由于不确认作者名称,故无法标记来源(实际来源是群pdf文档),暂时发文为原创,因为无法贴出原文链接! 云原生的前世今生 随着公有云和私有云的广泛部署,云计…...
两个适配器网络冲突,限制访问特定网址
两个适配器网络冲突,限制访问特定网址说明命令说明说明 因为工作需要,有线网络访问局域网服务器,限制特别策略访问,如禁止远程。此时如果想要远程,在连接手机热点就可以,但由于两个网络的存在优先级。就出…...
电子科技大学 高级计算机系统结构 考试回忆
首先题量不算小,因此没有太多时间把题都记出来,但是叙述一下题的类型希望能帮到以后选了这门课大家,在网上确实没有搜到这门课有关考试的任何资料,所以我也没啥参考全凭记忆和老师的PPT结合。复习的时候老师给了大纲,就…...
【设计模式】18.观察者模式
概述 定义: 又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能…...
软测入门(一)测试理念及基础知识
软测入门理念 软件的分类 按层次划分:系统软件、应用软件按组织划分:商业软件、开源软件按结构划分:单机软件、 软件缺陷 由来 Grace Hopper发明Cobol计算机语言,也是找出电脑程序中第一个bug的女程序员 BugDefect 定义 软…...
2022年“网络安全”赛项山东省菏泽市选拔赛任务书
2022年“网络安全”赛项山东省菏泽市选拔赛任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一:Apache安全配置 任务二:数据分析-A 任务三:Windows操作系…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...















