PyQt实现图片中心旋转
# -*- coding: cp936 -*-
from PyQt4 import QtCore, QtGui, Qt
class RotatePage(QtGui.QFrame):
def __init__(self, img, x_pos, y_pos, direction = 1, speed = 30, step = 10):
super(RotatePage, self).__init__()
self.img = img #图片
self.x_pos = x_pos #x坐标
self.y_pos = y_pos #y坐标
self.direction = direction #转向
self.speed = speed #转速
self.step = 10 #步长
self.rotate = 0 #角度
self.timer = QtCore.QBasicTimer() #定时器
self.timer.start(30, self)
def play(self):
#播放
self.timer.start(self.speed, self)
def stop(self):
#停止
self.timer.stop()
def setDirection(self, arg):
#设置转向
if arg <= 0:
self.step = - abs(self.step)
else:
self.step = abs(self.step)
self.timer.start(self.speed, self)
def setSpeed(self, speed):
#设置转速
self.speed = speed
self.timer.start(speed, self)
def setStep(self, arg):
#设置步长
self.step = arg
def paintEvent(self, event):
painter = Qt.QPainter(self)
pix = QtGui.QPixmap(self.img)
painter.translate(self.x_pos / 2, self.y_pos / 2) #使图片的中心作为旋转的中心
painter.rotate(self.rotate) #顺时针旋转10°
painter.translate(-self.x_pos / 2, -self.y_pos / 2) #将原点复位
painter.drawPixmap(0, 0, self.x_pos, self.y_pos, pix)
def timerEvent(self, event):
if event.timerId() == self.timer.timerId():
self.rotate += self.step
if self.rotate > 360:
self.rotate = 0
self.update()
else:
super(RotatePage, self).timerEvent(event)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
frm = RotatePage("icon.png", 100, 100)
frm.show()
sys.exit(app.exec_())
PyQt实现图片中心旋转的更多相关文章
- [golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算
1 前言 略,作为记录使用 2 代码 /** * @Author: FB * @Description: * @File: RotateSample.go * @Version: 1.0.0 * @D ...
- C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字
这篇文章是 GDI+ 总结系列的第三篇,如果对 GDI+ 的基础使用不熟悉的朋友可以先看第一篇文章<C# 使用 GDI+ 画图>. 需求 需求是要实现给图片添加任意角度旋转的文字,文字的旋 ...
- [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量
1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...
- [golang]图片按中心旋转后,新图的左顶点位置的偏移量
1 前言 图片按中心旋转后,新图的左顶点位置的偏移量 2 代码 func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y floa ...
- View以自身中心旋转的代码解惑
matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); 经常在中心旋转的应用中看到这段代码. ...
- android 围绕中心旋转动画
本文主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果 ...
- iOS 图片裁剪 + 旋转
iOS 图片裁剪 + 旋转 之前分别介绍了图片裁剪和图片旋转方法 <iOS 图片裁剪方法> 地址:http://www.cnblogs.com/silence-cnblogs/p/6490 ...
- 【Go语言绘图】图片的旋转
在上一篇中,我们了解了gg库的基本使用,包括调整大小.调整圆形参数.设置颜色.保存图片.加载图片和裁剪.这一篇我们来学习一下图片的旋转. 加载图片 首先,我们先来一张黄图. func TestRota ...
- css3相册图片3D旋转展示特效
查看效果:http://hovertree.com/texiao/css/14/ 本效果用css3的animation实现动画 定义和用法animation 属性是一个简写属性,用于设置六个动画属性: ...
随机推荐
- thread block grid
grid里面包含block,block里面包含thread grid里面所有的block都是同样大小的, 每个block最多可以有1024个thread. blockDim表示一个block里面th ...
- 〖转〗request.getparameter()和request.getAttribute()的区别
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParame ...
- Android学习笔记之viewholder
在adapter中通过使用静态内部类(viewholder)缓存组件的引用来防止ListView刷新时重新LayoutInflater跟findViewById从而达到优化的目的.示例如下: @Ove ...
- rhel Linux系统yum的配置
yum是一个很方便的linux系统软件管理工具,但是很多新手还是不会配置yum,下面详细的介绍下yum的配置方法,其实很简单. 1.首先确保系统ISO镜像已经成功挂载,可以用df -h命令查看.2.创 ...
- javascript 实现jsonp
jsonp原理其实也简单,虽然ajax不能跨域,但是通过src这个属性我们可以实现跨域,其实和我们引入第三方jquery调用它的方法一样的. html: <!DOCTYPE html> & ...
- 解决Linux下Oracle中文乱码的一些心得体会 ,转自
以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找 ...
- css3画苹果logo
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 3月25日html(六) Javascrip
第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与J ...
- OOAD基本概念
学习目标: 1.理解与掌握面向对象的概念与方法. 2.使用UML. 3.完成面向对象的分析与设计工作. 4.了解OO的设计原则及一些典型的设计模式 什么是面向对象? 面向对象(Object-Orien ...
- ECSTORE关于MONGODB安装
1.安装mongodb wget http://www.phpwindow.com/linux/mongodb-linux-x86_64-2.2.1.tgz tar zxvf mongodb-linu ...