python+tkinter实现绘图板

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() # 读入命令行并执行

你可能感兴趣的:(Python,工具,算法)