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

matrix.preTranslate(-centerX, -centerY);

matrix.postTranslate(centerX, centerY);

经常在中心旋转的应用中看到这段代码.

preTranslate是指在matrix旋转之前平移,postTranslate是指在matrix旋转之后平移

注意他们参数是平移的距离,而不是平移目的地的坐标!

由于旋转是以原点(0,0)为中心的,所以为了把界面的中心移至(0,0)对齐,就要preTranslate(-centerX, -centerY),这样看到的效果就是View以自身为中心点旋转,此时View的中心在原点的位置,等matrix操作完成后,调用postTranslate(centerX, centerY),再把图片移回来,这样看到的动画效果就是View原地以自己为中心不停的旋转了

注:centerX和centerY是界面View中心的坐标

时间: 2024-12-12 17:02:37

View以自身中心旋转的代码解惑的相关文章

图片旋转js代码

function rotateImage(imgId) { imageToRotate = document.getElementById(imgId); imageToRotate.style.filter= "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand')"; rotate(); } var imageToRotate; var degreeToRotate=0; function rotat

编程算法 - 左旋转字符串 代码(C)

左旋转字符串 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部. 请定义一个函数实现字符串左旋转操作的功能. 编程珠玑, 首先翻转前部分, 再翻转后部分, 最后全部翻转. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio

canvas绘制柱状图和、绘制形状中心旋转

<!DOCTYPE html> <html ng-app=""> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <canvas id="cvs" width="400" height="300"

使用CSS3动画属性实现360&#176;无限循环旋转【代码片段】

使用CSS3的animation动画属性实现360°无限循环旋转. 代码片段: <div id="test"> <img src="/CSS3/img/yinyue.png" id="change" />   //图片路径自定义 </div> CSS样式书写如下: #change{ position:absolute; right:200px; -webkit-animation:change 2s linea

旋转缩放代码

using UnityEngine; using System.Collections; // 直接放在相机上,控制相机的旋转和缩放 // public class CameraContro : MonoBehaviour { public Transform target; public float xSpeed=200, ySpeed=200, mSpeed=10; public float yMinLimit=-50, yMaxLimit=50; public float distance

Android Layout Binder(在线将XML中View find出来,生成java代码的工具)

废话不多说,这是地址:http://android.lineten.net/layout.php. 有图有真相,例如: 你的XML假如是这样: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fil

OpenFramework中视频或者图片进行中心旋转、平移、放大、缩小、矫正(本例以视频为准,只给出主要代码)

/********** update mesh部分***********/ for(int i=0;i<4;i++) {  mesh[i].clear(); //重要,不加的话,移动视频的四个角出现视频的重叠 mesh[i].addVertex(ofPoint(point[i][0]->x,point[i][0]->y));  mesh[i].addVertex(ofPoint(point[i][1]->x,point[i][1]->y));  mesh[i].addVert

Android-两个小球不停的绕中心旋转的进度条

转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/47363911 本文出自:海龙的博客 一.概述 最近做了一个比较清新的进度条,没啥难度的,就是涉及到属性动画和canvas绘制圆形的知识,因为群里有一个问怎么实现的,这里就稍微写了一下原理,先看效果图 二.效果图 Gif录制的帧数有点低,导致稍微有点卡,但是在真实运行的时候一点都不卡 三.实现原理 自定义view 自定义属性动画 canvas画圆 四.代码实现 因为代码

android 围绕中心旋转动画

本文主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果:第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似.本文分析 Tween动画的rotate实现旋转效果. 在新浪微博客户端中各个操作进行中时activity的右上角都会有个不停旋转的图标,类似刷新的效果,给用户以操作中的提示.这种非模态的提示方式推荐使用,那么下面就分享下如何实现这种