python+tkinter实现绘图板

14 篇文章 0 订阅
14 篇文章 0 订阅

python+tkinter实现绘图板

github项目地址:
https://github.com/593413198/DrawingBoard

创建时间:
2019/5/10

搭建环境:
Ubuntu 18.04 + python 3.6 + tkinter

使用指南:
画板界面图片
上方菜单提供了用户界面的所有操作;
下方文本框提供了命令行接口,按"执行命令"按钮即可执行指令
最底部显示canvas上的所有图元,包括 “类型”+“ID”

实现功能:

  • 重置画布 resetCanvas width height
    • 删除canvas所有元素,然后重置窗口大小即可(canvas是始终铺满窗口的)
  • 保存画布 saveCanvas name.bmp
    • 因为linux下通过截屏实现,所有保存的画布实际是整个屏幕
  • 设置画笔颜色 setColor R G B
    • tkinter内使用16进制,要转换
  • 设置画笔粗细 setWidth width
  • 绘制线段 drawLine id x1 y1 x2 y2 algorithm
    • Bresenham
    • DDA
  • 绘制椭圆 drawEllipse id x y rx ry
    • 中点圆生成算法
  • 绘制多边形 drawPolygon id n x1 y1 x2 y2 … xn yn
    • 通过Bresenham绘制多条线段即可
  • 对图元平移 translate id dx dy
  • 对图元旋转 rotate id x y r
  • 对图元缩放 scale id x y s

代码架构:

  • 第三方库
from tkinter import *
import tkinter.messagebox as messagebox # 弹窗
import pyscreenshot as ImageGrab # 截图功能 for linux
#from PIL import ImageGrab # 截图功能 for MacOS and Windows
  • 窗口及菜单
window = Tk()  # 主窗口window
canvas = Canvas(window, ...) # 主画布canvas
menu = Menu(windows) # 顶部主菜单menu
entry = Entry(..) # 接受命令行指令的输入
button = Button(..) # 读入指令并执行
  • 全局变量
Type_draw # 记录画图的类型  1:直线 2:点 3:椭圆
Flag_draw # 记录是否允许画图  0:不允许 1:允许
Color_pen # 画笔颜色 采用16进制表示
Width_pen # 画笔粗细
  • 鼠标事件
onLeftDown()  # 鼠标左键单击,允许开始画图
onLeftMove()  # 鼠标左键拖动,开始画图
onLeftUp()    # 鼠标左键松开,停止画图
  • 绘图算法
Bresenham() # bresenham算法画直线
Draw_ellipse() # 中点圆生成算法画椭圆
  • 相关函数
toHex() # 将RGB转化成十六进制色彩表示
rotate() # 旋转指定点
execute() # 读入命令行并执行
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值