Add 'paintboard.py'

qt
p4w2aybsf 4 years ago
parent c0a910db37
commit a3d99d7980

@ -0,0 +1,82 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPixmap, QPainter, QPen, QColor
from PyQt5.QtCore import Qt, QPoint, QSize
class PaintBoard(QWidget):
def __init__(self, Parent = None, Size = QSize(320, 240), Fill = QColor(255,255,255,255)):
super().__init__(Parent)
# 初始化参数
self.__size = Size # 画板尺寸
self.__fill = Fill # 画板默认填充颜色
self.__thickness = 18 # 默认画笔粗细
self.__penColor = QColor(0,0,0,255) # 默认画笔颜色
self.__begin_point = QPoint()
self.__end_point = QPoint()
# 初始化画板界面
self.__board = QPixmap(self.__size)
self.__board.fill(Fill)
self.setFixedSize(self.__size)
self.__painter = QPainter() # 新建绘图工具
# 清空画板
def Clear(self):
self.__board.fill(self.__fill)
self.update()
def setBoardFill(self, fill):
self.__fill = fill
self.__board.fill(fill)
self.update()
# 设置画笔颜色
def setPenColor(self, color):
self.__penColor = color
# 设置画笔粗细
def setPenThickness(self, thickness=10):
self.__thickness = thickness
# 获取画板QImage类型图片
def getContentAsQImage(self):
image = self.__board.toImage()
return image
# 双缓冲绘图,绘图事件
def paintEvent(self, paintEvent):
self.__painter.begin(self)
self.__painter.drawPixmap(0,0,self.__board)
self.__painter.end()
def mousePressEvent(self, mouseEvent):
if mouseEvent.button() == Qt.LeftButton:
self.__begin_point = mouseEvent.pos()
self.__end_point = self.__begin_point
# self.update()
def mouseMoveEvent(self, mouseEvent):
if mouseEvent.buttons() == Qt.LeftButton:
self.__end_point = mouseEvent.pos()
# 画入缓冲区
self.__painter.begin(self.__board)
self.__painter.setPen(QPen(self.__penColor,self.__thickness))
self.__painter.drawLine(self.__begin_point, self.__end_point)
self.__painter.end()
self.__begin_point = self.__end_point
self.update()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = PaintBoard()
demo.show()
sys.exit(app.exec_())
Loading…
Cancel
Save