zoukankan      html  css  js  c++  java
  • 绘图QPainter-画刷

    Qt提供的画刷风格:

     

    Qt.TexturePattern   自定义图像画刷

    线性渐变 QLinearGradientPattern

    QLinearGradient需要传入的参数为需要进行渐变的区域坐标,那其实只要把我们在paintEvent()事件函数中要绘制的矩形区域的坐标输入即可(输入两点坐标,若输入对角坐标,则在对角方向上渐变,笔者这里就是输入的左上和右下对角坐标)

    径向渐变QRadialGradientPattern

    锥形渐变QConicalGradientPattern

     1 import sys
     2 from PyQt5.QtCore import Qt
     3 from PyQt5.QtGui import QPainter, QBrush, QPixmap, QLinearGradient, QRadialGradient, QConicalGradient
     4 from PyQt5.QtWidgets import QApplication, QWidget
     5 
     6 class Demo(QWidget):
     7     def __init__(self):
     8         super(Demo, self).__init__()
     9         self.resize(600, 600)
    10 
    11         self.brush1 = QBrush(Qt.SolidPattern)  # 实例化一个画刷。参数:画刷样式
    12         #画刷默认的样式为Qt.NoBrush
    13 
    14         self.brush2 = QBrush(Qt.Dense6Pattern)
    15         self.brush2.setColor(Qt.red)  #设置画刷颜色
    16 
    17         gradient1 = QLinearGradient(200, 200, 300, 300) #实例化一个线性渐变画刷样式
    18         #QLinearGradient需要传入的参数为需要进行渐变的区域坐标,那其实只要把我们在paintEvent()事件函数中要绘制的矩形区域的坐标输入即可(输入两点坐标,若输入对角坐标,则在对角方向上渐变,笔者这里就是输入的左上和右下对角坐标)
    19 
    20         gradient1.setColorAt(0.2, Qt.red)#设置渐变位置和渐变色
    21         #第一个参数代表颜色开始渐变的位置(大小范围为0-1),第二个参数为颜色值。比如gradient1.setColorAt(0.2, Qt.red)的意思就是说红色在渐变区域0.2(即20%)处的位置开始渐变到下一种颜色
    22         gradient1.setColorAt(0.8, Qt.green)
    23         gradient1.setColorAt(1, Qt.blue)
    24         self.brush3 = QBrush(gradient1)#实例化画刷,样式:渐变色
    25 
    26         gradient2 = QRadialGradient(350, 350, 50, 350, 350)  #实例化一个径向渐变画刷样式
    27         #前两个参数为中心点坐标,50为半径(渐变范围),后两个为焦点坐标???
    28         gradient2.setColorAt(0, Qt.red)
    29         gradient2.setColorAt(1, Qt.blue)
    30         self.brush4 = QBrush(gradient2)
    31 
    32         gradient3 = QConicalGradient(450, 450, 0)   #实例化一个锥形渐变画刷样式
    33         #前两个值为中心点坐标,最后一个为首个颜色开始处的角度值(范围为0-360)
    34         gradient3.setColorAt(0, Qt.red)
    35         gradient3.setColorAt(1, Qt.blue)
    36         self.brush5 = QBrush(gradient3)
    37 
    38         self.brush6 = QBrush(Qt.TexturePattern)  #自定义图像画刷
    39         self.brush6.setTexture(QPixmap('images/大象.png'))  #设置图像
    40 
    41     def paintEvent(self, QPaintEvent):
    42         painter = QPainter(self)
    43         painter.setBrush(self.brush1)  # 给画布设置画刷
         
    44 painter.drawRect(0, 0, 100, 100) 45 46 painter.setBrush(self.brush2) 47 painter.drawRect(100, 100, 100, 100) 48 49 painter.setBrush(self.brush3) 50 painter.drawRect(200, 200, 100, 100) 51 52 painter.setBrush(self.brush4) 53 painter.drawRect(300, 300, 100, 100) 54 55 painter.setBrush(self.brush5) 56 painter.drawRect(400, 400, 100, 100) 57 58 painter.setBrush(self.brush6) 59 painter.drawRect(500, 500, 100, 100) 60 61 if __name__ == '__main__': 62 app = QApplication(sys.argv) 63 demo = Demo() 64 demo.show() 65 sys.exit(app.exec_())
    qp.setBrush(QColor(200, 0, 0))  #给画布设置画刷颜色
  • 相关阅读:
    事件与委托(二)
    事件与委托(一)
    c#不可变类型
    fastjson漏洞始末
    深入利用shiro反序列化漏洞
    一个半路出家的渗透测试工程师(四)
    线性模型与损失函数(分类问题)
    论文翻译:A Differentiable Perceptual Audio Metric Learned from Just Noticeable Differences
    SQL Server add auto increment primary key to existing table
    一次SQLServer實踐記錄——先一個表中三個日期的最大者,作爲查詢條件再查詢
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10404419.html
Copyright © 2011-2022 走看看