绘图QPainter-画刷
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-画刷的更多相关文章
- C# GDI绘图之——画笔和画刷
绘制图形需要画笔和画刷: Pen(画笔类): Pen为C#编程语言中专门的画笔类 使用方式: // 用系统颜色来初始化我们的画笔类,使用Color静态类中的颜色 1. Pen p1 = new Pen ...
- Qt 学习之路 2(25):画刷和画笔
Home / Qt 学习之路 2 / Qt 学习之路 2(25):画刷和画笔 Qt 学习之路 2(25):画刷和画笔 豆子 2012年11月5日 Qt 学习之路 2 17条评论 前面一章我们提 ...
- [游戏模版3] Win32 画笔 画刷 图形
>_<:introduce the functions of define\create\use pen and brush to draw all kinds of line and s ...
- WPF 动画(形状、画刷)
一:形状 在WPF用户界面中,可以通过形状(Shape)来绘制直线.椭圆.矩形及一些多边形的类.通过这些基本的图像,组合成为复杂的图形. Shape类中,主要的形状有Rectangle(),Ellip ...
- WPF学习系列之八(形状,画刷和变换)
形状,画刷和变换 概述: 在许多用户界面技术中,普通控件和自定义绘图之间具有清晰的区别.通常来说,绘图特性只用于特定的应用程序--如游戏,数据可视化和物理仿真等.而WPF具有一个非常不同的原则.它 ...
- qt画刷和画笔
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #画刷和画笔:QBrush 定义了 QPainter 的填充模式,具 ...
- Windows Phone开发(31):画刷
原文:Windows Phone开发(31):画刷 画刷是啥玩意儿?哈,其实画刷是用来涂鸦,真的,没骗你,至于你信不信,反正我信了. 本文通过价绍几个典型的画刷,使你明白画刷就是用来涂鸦的. 一.纯色 ...
- WPF 10天修炼 第八天 - 形状、画刷和变换
图形 在WPF中使用绘图最简单的就是使用Shape类.Shape类继承自FrameworkElement,是一个专门用来绘图的类.Shape类中年派生的类有直线.矩形.多边形和圆形等. System. ...
- GDI+编程(画笔/画刷/路径/区域)
构造Graphics对象 Graphics类是GDI+程序设计的核心,Graphics类能够完成大部分的绘图,文本输出,几何图形的填充及坐标系统的转换等各种操作.在功能上,它与GDI的设备环境(DC) ...
- VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)
上一节中鸡啄米主要讲的是画笔CPen的用法,前面也说了,GDI对象中最常用的就是画笔和画刷,本节就讲讲画刷CBrush. 鸡啄米依然是通过实例的方式来说明画刷的用法.此实例要实现的功能是,对话框上有一 ...
随机推荐
- 如何使用grep 等命令快速的在日志中找到自己需要的内容
虽然使用linux也有好几年了,但是服务器端开发的活儿正经来算才干不到一年. 一直没有需求和机会会去花大量的时间排查日志啥的,直到我摊上了大事t t,写的代码在线上出了bug需要排查问题. grep可 ...
- Maven 3-Maven依赖版本冲突的分析及解决小结
我自己遇到了一个问题: 我需要使用一个api,这个api已经引入包:slf4j-log4j12 所以,在自己的pom中,如果引入了这个包,需要exclude掉: 因为在pom.xml中查询是找不到的, ...
- the project already contains a form or module named pcm001怎麼解決
the project already contains a form or module named pcm001怎麼解決 菜单Project -> Remove from project.. ...
- 03 基于umi搭建React快速开发框架(封装列表增删改查)
前言 大家在做业务系统的时候,很多地方都是列表增删改查,做这些功能占据了大家很长时间,如果我们有类似的业务,半个小时就能做出一套那是不是很爽呢. 这样我们就可以有更多的时间学习一些新的东西.我们这套框 ...
- 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 ...
- map()实现zip()功能
c = (map(lambda x,y:(x,y),[1,2,3],["abd","def","ghi"]))print(list(c)) ...
- docker --Dockerfile--一些语法
环境更换 环境变量(与声明的ENV声明),也可以在特定指令作为变量用来被解释 Dockerfile.转义也被处理,从字面上包含类似于变量的语法. 环境变量Dockerfile用 $variable_n ...
- BZOJ2557[Poi2011]Programming Contest——匈牙利算法+模拟费用流
题目描述 Bartie and his friends compete in the Team Programming Contest. There are n contestants on each ...
- LightOJ - 1074 Extended Traffic(标记负环)
题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环.问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的 ...
- python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集
IDE:jupyter 目前我知道的数据集来源有两个,一个是csv数据集文件另一个是从sklearn.datasets导入 1.1 csv格式的数据集(下载地址已上传到博客园----数据集.rar) ...