# -*- 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实现图片中心旋转的更多相关文章

  1. [golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算

    1 前言 略,作为记录使用 2 代码 /** * @Author: FB * @Description: * @File: RotateSample.go * @Version: 1.0.0 * @D ...

  2. C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字

    这篇文章是 GDI+ 总结系列的第三篇,如果对 GDI+ 的基础使用不熟悉的朋友可以先看第一篇文章<C# 使用 GDI+ 画图>. 需求 需求是要实现给图片添加任意角度旋转的文字,文字的旋 ...

  3. [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量

    1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...

  4. [golang]图片按中心旋转后,新图的左顶点位置的偏移量

    1 前言 图片按中心旋转后,新图的左顶点位置的偏移量 2 代码 func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y floa ...

  5. View以自身中心旋转的代码解惑

    matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); 经常在中心旋转的应用中看到这段代码. ...

  6. android 围绕中心旋转动画

    本文主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果 ...

  7. iOS 图片裁剪 + 旋转

    iOS 图片裁剪 + 旋转 之前分别介绍了图片裁剪和图片旋转方法 <iOS 图片裁剪方法> 地址:http://www.cnblogs.com/silence-cnblogs/p/6490 ...

  8. 【Go语言绘图】图片的旋转

    在上一篇中,我们了解了gg库的基本使用,包括调整大小.调整圆形参数.设置颜色.保存图片.加载图片和裁剪.这一篇我们来学习一下图片的旋转. 加载图片 首先,我们先来一张黄图. func TestRota ...

  9. css3相册图片3D旋转展示特效

    查看效果:http://hovertree.com/texiao/css/14/ 本效果用css3的animation实现动画 定义和用法animation 属性是一个简写属性,用于设置六个动画属性: ...

随机推荐

  1. thread block grid

    grid里面包含block,block里面包含thread grid里面所有的block都是同样大小的,  每个block最多可以有1024个thread. blockDim表示一个block里面th ...

  2. 〖转〗request.getparameter()和request.getAttribute()的区别

    getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParame ...

  3. Android学习笔记之viewholder

    在adapter中通过使用静态内部类(viewholder)缓存组件的引用来防止ListView刷新时重新LayoutInflater跟findViewById从而达到优化的目的.示例如下: @Ove ...

  4. rhel Linux系统yum的配置

    yum是一个很方便的linux系统软件管理工具,但是很多新手还是不会配置yum,下面详细的介绍下yum的配置方法,其实很简单. 1.首先确保系统ISO镜像已经成功挂载,可以用df -h命令查看.2.创 ...

  5. javascript 实现jsonp

    jsonp原理其实也简单,虽然ajax不能跨域,但是通过src这个属性我们可以实现跨域,其实和我们引入第三方jquery调用它的方法一样的. html: <!DOCTYPE html> & ...

  6. 解决Linux下Oracle中文乱码的一些心得体会 ,转自

    以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找 ...

  7. css3画苹果logo

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 3月25日html(六) Javascrip

                             第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与J ...

  9. OOAD基本概念

    学习目标: 1.理解与掌握面向对象的概念与方法. 2.使用UML. 3.完成面向对象的分析与设计工作. 4.了解OO的设计原则及一些典型的设计模式 什么是面向对象? 面向对象(Object-Orien ...

  10. ECSTORE关于MONGODB安装

    1.安装mongodb wget http://www.phpwindow.com/linux/mongodb-linux-x86_64-2.2.1.tgz tar zxvf mongodb-linu ...