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. 热修改 MySQL 数据库 pt-online-schema-change 的使用详解

    由于周五公司团建的关系所以此篇推迟了抱歉. 首先不得不在该篇里面梳理一个数据库热增加删除字段表的工具 pt-online-schema-change 这个工具在前面我的博文 <关于utf8mb4 ...

  2. 关于ListBox在Grid中无法充满的问题

    WPF布局的时候发现一个问题,ListBox放在Grid中的时候,老是无法充满整个Grid,但是查看代码也没有设置相关的属性,原来在设置ListBox之前首先要让ListBox的容器充满,然后List ...

  3. BZOJ4399魔法少女LJJ——线段树合并+并查集

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

  4. Dining POJ - 3281

    题意: f个食物,d杯饮料,每个牛都有想吃的食物和想喝的饮料,但食物和饮料每个只有一份 求最多能满足多少头牛.... 解析: 一道简单的无源汇拆点最大流   无源汇的一个最大流,先建立超级源s和超级汇 ...

  5. POI插入图片至Excel使用固定的长宽

    使用POI在Excel里插入图片,如何使插入的图片使用固定的大小?先介绍原有的两种方式: 一种是指定开始和结尾单元格,然后从头画到尾,相当于平铺 还有一种就是仅指定开始的单元格,图片的大小跟这个单元格 ...

  6. day26 多继承

    class A(object): def test(self): print('from A') class B(A): def test(self): print('from B') class C ...

  7. Division, UVa 72(暴力求解)

    题目链接:https://vjudge.net/problem/UVA-725 Write a program that finds and displays all pairs of 5-digit ...

  8. 小整数池和intern机制

    在python中,为了优化速度,避免频繁申请和销毁内存空间,python使用小整数池来缓存 range(-5,257) 之间的整数(这里不包含257),这些小整数在赋值引用时使用的都是同一个对象和内存 ...

  9. JavaScript中解决jQuery和Prototype.js同时引入冲突问题

    两个库同时都定义了一个叫$的函数,所以在同时使用的时候会发生冲突.jQuery( http://jquery.com/ https://jquery.org/ )中提供了一种返还$的使用权给其他js库 ...

  10. 树莓派上使用mdk3对无线热点进行DoS攻击

    写在前面 你必须确保你的无线网卡支持监听模式(混淆模式),树莓派板载的无限网卡是不支持的.所以你必须额外安装一个支持监听模式的USB无线网卡. 安装mdk3 安装sudo apt install md ...