Qt提供的画刷风格:

Qt.TexturePattern   自定义图像画刷

线性渐变 QLinearGradientPattern

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

径向渐变QRadialGradientPattern

锥形渐变QConicalGradientPattern

 import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QBrush, QPixmap, QLinearGradient, QRadialGradient, QConicalGradient
from PyQt5.QtWidgets import QApplication, QWidget class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.resize(600, 600) self.brush1 = QBrush(Qt.SolidPattern) # 实例化一个画刷。参数:画刷样式
#画刷默认的样式为Qt.NoBrush self.brush2 = QBrush(Qt.Dense6Pattern)
self.brush2.setColor(Qt.red) #设置画刷颜色 gradient1 = QLinearGradient(200, 200, 300, 300) #实例化一个线性渐变画刷样式
#QLinearGradient需要传入的参数为需要进行渐变的区域坐标,那其实只要把我们在paintEvent()事件函数中要绘制的矩形区域的坐标输入即可(输入两点坐标,若输入对角坐标,则在对角方向上渐变,笔者这里就是输入的左上和右下对角坐标) gradient1.setColorAt(0.2, Qt.red)#设置渐变位置和渐变色
#第一个参数代表颜色开始渐变的位置(大小范围为0-1),第二个参数为颜色值。比如gradient1.setColorAt(0.2, Qt.red)的意思就是说红色在渐变区域0.2(即20%)处的位置开始渐变到下一种颜色
gradient1.setColorAt(0.8, Qt.green)
gradient1.setColorAt(1, Qt.blue)
self.brush3 = QBrush(gradient1)#实例化画刷,样式:渐变色 gradient2 = QRadialGradient(350, 350, 50, 350, 350) #实例化一个径向渐变画刷样式
#前两个参数为中心点坐标,50为半径(渐变范围),后两个为焦点坐标???
gradient2.setColorAt(0, Qt.red)
gradient2.setColorAt(1, Qt.blue)
self.brush4 = QBrush(gradient2) gradient3 = QConicalGradient(450, 450, 0) #实例化一个锥形渐变画刷样式
#前两个值为中心点坐标,最后一个为首个颜色开始处的角度值(范围为0-360)
gradient3.setColorAt(0, Qt.red)
gradient3.setColorAt(1, Qt.blue)
self.brush5 = QBrush(gradient3) self.brush6 = QBrush(Qt.TexturePattern) #自定义图像画刷
self.brush6.setTexture(QPixmap('images/大象.png')) #设置图像 def paintEvent(self, QPaintEvent):
painter = QPainter(self)
painter.setBrush(self.brush1) # 给画布设置画刷
     

painter.drawRect(0, 0, 100, 100) painter.setBrush(self.brush2)
painter.drawRect(100, 100, 100, 100) painter.setBrush(self.brush3)
painter.drawRect(200, 200, 100, 100) painter.setBrush(self.brush4)
painter.drawRect(300, 300, 100, 100) painter.setBrush(self.brush5)
painter.drawRect(400, 400, 100, 100) painter.setBrush(self.brush6)
painter.drawRect(500, 500, 100, 100) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
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. HTML5 & auto download image

    HTML5 & auto download image https://www.sitepoint.com/new-html5-attributes-hyperlinks-download-m ...

  2. Python——多进程

    进程的实例 # -*- coding:UTF-8 -*- import os import time from multiprocessing import Process #进程 def func( ...

  3. Laravel表单传值

    仔细阅读过Laravel官方文档的就不用看啦~ 整理下之前遇到的关于Laravel表单的一些小问题 表单传值无法传过去,因为laravel做了表单的防护 只需要将{{ csrf_field() }}放 ...

  4. 自学Linux Shell14.1-理解输入输出

    点击返回 自学Linux命令行与Shell脚本之路 14.1-理解输入输出(点击这里获得更多) 两种显示脚本输出的方法: 在显示器屏幕上显示输出 将输出重定向到文件中 1. 标准文件描述符 linux ...

  5. 【BZOJ4161】Shlw loves matrixI (常系数齐次线性递推)

    [BZOJ4161]Shlw loves matrixI (常系数齐次线性递推) 题面 BZOJ 题解 \(k\)很小,可以直接暴力多项式乘法和取模. 然后就是常系数齐次线性递推那套理论了,戳这里 # ...

  6. 平衡树Splay

    维护区间添加,删除,前驱,后继,排名,逆排名 普通平衡树 #include <cstdio> #define ls t[now].ch[0] #define rs t[now].ch[1] ...

  7. JNative 传递参数bug

    下载JNative网址:http://sourceforge.net/projects/jnative/files/jnative/ 下载JNative版本:JNative_1.4RC3_bin.zi ...

  8. Angularjs中的$q详解

    先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过 ...

  9. Logstash grok解析IIS 10.0 日志实例

    Logstash解析IIS日志的核心在于logstash配置文件 IIS 日志位置和格式如下: #Software: Microsoft Internet Information Services 1 ...

  10. quartz简单定时任务【可以处理完一个任务才开启下一个线程】【我】

    maven jar project项目一个 pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...