跳至正文
View Categories

< 1 min read

主要内容 #

  • 画布模块的编写
  • 画笔模块的编写
  • 绘图事件的编写
  • 1. 画布模块的编写 #

    首先需要在可以显示图像的窗口中添加画布。
    在函数__init__(self)中添加画布的初始化
    程序如下:

    
            self.__QPixmap = QPixmap(QSize(800,800))  #设置画布大小为800*800
            self.__QPixmap.fill(Qt.white)   #用白色填充画布

    2. 画笔模块的编写 #

    在函数__init__(self)中对画笔的粗细和颜色进行初始化。
    同时也要设置画笔在画布中最初的位置
    程序如下:

    
            #设置画笔在画布中最初的位置
    		#画笔最初位置设置为-60,是因为后续的程序中将设置画笔最粗为60个像素
    		#在画笔最粗时,也必须要在画布的坐标之外。在后续对笔画设置时会详细讲解
    		#绘制的图像是由多条直线构成的,所以要设置直线的起始和终点坐标
            self.x1 = -60  #直线起始点的x坐标
            self.y1 = -60  #直线起始点的y坐标
            self.x2 = -60  #直线终点的x坐标
            self.y2 = -60  #直线终点的y坐标
    
            self.__thickness = 3 #默认画笔粗细为3px
            self.__penColor = QColor("aliceblue")  #默认为爱丽丝蓝,因为默认在颜色列表中,第一个颜色就是爱丽丝蓝

    3. 绘图事件的编写 #

    编写绘图事件,目的是实现能够在画布中绘制想要的图案
    本程序的功能主要是绘制直线
    在类PaintImage中添加绘图事件的方法,程序如下:

    
        # 绘图事件
        def paintEvent(self, paintEvent):
            self.ImageView.setPixmap(self.__QPixmap)  #在显示图像的窗口ImageView中添加画布__QPixmap
            painter = QPainter(self.__QPixmap)    #声明一个QPainter对象
            painter.setPen(QPen(self.__penColor, self.__thickness))  #设置QPainter对象中的画笔参数
    
            painter.drawLine(self.x1, self.y1, self.x2, self.y2)   #通过QPainter对象中的画直线的方法(drawLine)绘制直线
            self.x2 = self.x1  #每次绘制完直线都将直线终点的x坐标更新为起始点的x坐标
            self.y2 = self.y1  #每次绘制完直线都将直线终点的y坐标更新为起始点的y坐标

    4. 小结 #

    • 创建画布,并填充为白色。
    • 创建笔画的粗细,颜色,以及初始的坐标。
    • 绘图事件的编写。

    习题 #