锁定老帖子 主题:Android画图之Matrix(二)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-13
请教楼主~~
final Matrix matrix = t.getMatrix(); matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); centerX/centerY是自定义的数值 上面的matrix后面的两个方法到是什么意思~~实在是搞不懂麻烦 |
|
返回顶楼 | |
发表时间:2010-08-13
hesiming 写道 请教楼主~~
final Matrix matrix = t.getMatrix(); matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); centerX/centerY是自定义的数值 上面的matrix后面的两个方法到是什么意思~~实在是搞不懂麻烦 //从t中获取一个Matrix对象 final Matrix matrix = t.getMatrix(); //在这个matrix操作序列之前,加一个平移操作 matrix.preTranslate(-centerX, -centerY); //在这个matrix操作序列之后,加一个平移操作 matrix.postTranslate(centerX, centerY); |
|
返回顶楼 | |
发表时间:2010-08-29
谢谢了楼主,正需要了解Android里的多点触摸方面的知识。
|
|
返回顶楼 | |
发表时间:2010-09-26
这样使用速度是不是很慢啊?我按着你的方法画图,但是速度很慢!有没有什么解决的方法?谢谢
|
|
返回顶楼 | |
发表时间:2010-09-26
wenyufamily 写道 这样使用速度是不是很慢啊?我按着你的方法画图,但是速度很慢!有没有什么解决的方法?谢谢
不知道你什么情况,一般来说这样画图对于大部分情况都足够了。如果是游戏这样的需要一直更新画面的情况,就需要用surfaceview了,速度会快些。 |
|
返回顶楼 | |
发表时间:2010-09-26
水平镜像??
|
|
返回顶楼 | |
发表时间:2010-10-27
chroya 写道
上一篇Android画图之Matrix(一)
讲了一下Matrix的原理和运算方法,涉及到高等数学,有点难以理解。还好Android里面提供了对Matrix操作的一系
Matrix m = new Matrix(); m.postRotate(30); m.postTranslate(100, 100);
这样就达到了想要的效果。
Matrix m = new Matrix(); m.setTranslate(100, 100); m.preRotate(30); 旋转、缩放和倾斜都可以围绕一个中心点来进行,如果不指定,默认情况下,是围绕(0,0)点来进行。
下面给出一个例子。 package chroya.demo.graphics; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.util.DisplayMetrics; import android.view.MotionEvent; import android.view.View; public class MyView extends View { private Bitmap mBitmap; private Matrix mMatrix = new Matrix(); public MyView(Context context) { super(context); initialize(); } private void initialize() { Bitmap bmp = ((BitmapDrawable)getResources().getDrawable(R.drawable.show)).getBitmap(); mBitmap = bmp; /*首先,将缩放为100*100。这里scale的参数是比例。有一点要注意,如果直接用100/ bmp.getWidth()的话,会得到0,因为是整型相除,所以必须其中有一个是float型的,直接用100f就好。*/ mMatrix.setScale(100f/bmp.getWidth(), 100f/bmp.getHeight()); //平移到(100,100)处 mMatrix.postTranslate(100, 100); //倾斜x和y轴,以(100,100)为中心。 mMatrix.postSkew(0.2f, 0.2f, 100, 100); } @Override protected void onDraw(Canvas canvas) { // super.onDraw(canvas); //如果界面上还有其他元素需要绘制,只需要将这句话写上就行了。 canvas.drawBitmap(mBitmap, mMatrix, null); } } 运行效果如下: 红色的x和y表示倾斜的角度,下面是x,上面是y。看到了没,Matrix就这么简单 。
|
|
返回顶楼 | |
发表时间:2010-11-29
讲述的比第一个易懂多了,基本的已经会了,等待发现稍难的问题
|
|
返回顶楼 | |