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_())
  1. qp.setBrush(QColor(200, 0, 0)) #给画布设置画刷颜色

绘图QPainter-画刷的更多相关文章

  1. C# GDI绘图之——画笔和画刷

    绘制图形需要画笔和画刷: Pen(画笔类): Pen为C#编程语言中专门的画笔类 使用方式: // 用系统颜色来初始化我们的画笔类,使用Color静态类中的颜色 1. Pen p1 = new Pen ...

  2. Qt 学习之路 2(25):画刷和画笔

    Home / Qt 学习之路 2 / Qt 学习之路 2(25):画刷和画笔 Qt 学习之路 2(25):画刷和画笔  豆子  2012年11月5日  Qt 学习之路 2  17条评论 前面一章我们提 ...

  3. [游戏模版3] Win32 画笔 画刷 图形

    >_<:introduce the functions of define\create\use pen and brush to draw all kinds of line and s ...

  4. WPF 动画(形状、画刷)

    一:形状 在WPF用户界面中,可以通过形状(Shape)来绘制直线.椭圆.矩形及一些多边形的类.通过这些基本的图像,组合成为复杂的图形. Shape类中,主要的形状有Rectangle(),Ellip ...

  5. WPF学习系列之八(形状,画刷和变换)

    形状,画刷和变换   概述: 在许多用户界面技术中,普通控件和自定义绘图之间具有清晰的区别.通常来说,绘图特性只用于特定的应用程序--如游戏,数据可视化和物理仿真等.而WPF具有一个非常不同的原则.它 ...

  6. qt画刷和画笔

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #画刷和画笔:QBrush 定义了 QPainter 的填充模式,具 ...

  7. Windows Phone开发(31):画刷

    原文:Windows Phone开发(31):画刷 画刷是啥玩意儿?哈,其实画刷是用来涂鸦,真的,没骗你,至于你信不信,反正我信了. 本文通过价绍几个典型的画刷,使你明白画刷就是用来涂鸦的. 一.纯色 ...

  8. WPF 10天修炼 第八天 - 形状、画刷和变换

    图形 在WPF中使用绘图最简单的就是使用Shape类.Shape类继承自FrameworkElement,是一个专门用来绘图的类.Shape类中年派生的类有直线.矩形.多边形和圆形等. System. ...

  9. GDI+编程(画笔/画刷/路径/区域)

    构造Graphics对象 Graphics类是GDI+程序设计的核心,Graphics类能够完成大部分的绘图,文本输出,几何图形的填充及坐标系统的转换等各种操作.在功能上,它与GDI的设备环境(DC) ...

  10. VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)

    上一节中鸡啄米主要讲的是画笔CPen的用法,前面也说了,GDI对象中最常用的就是画笔和画刷,本节就讲讲画刷CBrush. 鸡啄米依然是通过实例的方式来说明画刷的用法.此实例要实现的功能是,对话框上有一 ...

随机推荐

  1. 如何使用grep 等命令快速的在日志中找到自己需要的内容

    虽然使用linux也有好几年了,但是服务器端开发的活儿正经来算才干不到一年. 一直没有需求和机会会去花大量的时间排查日志啥的,直到我摊上了大事t t,写的代码在线上出了bug需要排查问题. grep可 ...

  2. Maven 3-Maven依赖版本冲突的分析及解决小结

    我自己遇到了一个问题: 我需要使用一个api,这个api已经引入包:slf4j-log4j12 所以,在自己的pom中,如果引入了这个包,需要exclude掉: 因为在pom.xml中查询是找不到的, ...

  3. the project already contains a form or module named pcm001怎麼解決

    the project already contains a form or module named pcm001怎麼解決 菜单Project -> Remove from project.. ...

  4. 03 基于umi搭建React快速开发框架(封装列表增删改查)

    前言 大家在做业务系统的时候,很多地方都是列表增删改查,做这些功能占据了大家很长时间,如果我们有类似的业务,半个小时就能做出一套那是不是很爽呢. 这样我们就可以有更多的时间学习一些新的东西.我们这套框 ...

  5. Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR

    I0930 21:23:15.115576 30918 solver.cpp:281] Learning Rate Policy: multistepF0930 21:23:17.263314 310 ...

  6. map()实现zip()功能

    c = (map(lambda x,y:(x,y),[1,2,3],["abd","def","ghi"]))print(list(c)) ...

  7. docker --Dockerfile--一些语法

    环境更换 环境变量(与声明的ENV声明),也可以在特定指令作为变量用来被解释 Dockerfile.转义也被处理,从字面上包含类似于变量的语法. 环境变量Dockerfile用 $variable_n ...

  8. BZOJ2557[Poi2011]Programming Contest——匈牙利算法+模拟费用流

    题目描述 Bartie and his friends compete in the Team Programming Contest. There are n contestants on each ...

  9. LightOJ - 1074 Extended Traffic(标记负环)

    题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环.问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的 ...

  10. python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集

    IDE:jupyter 目前我知道的数据集来源有两个,一个是csv数据集文件另一个是从sklearn.datasets导入 1.1 csv格式的数据集(下载地址已上传到博客园----数据集.rar) ...