六、RectF类android.graphics.RectF和Rect类android.graphics.Rect
RectF
这个类包含一个矩形的四个单精度浮点坐标。矩形通过上下左右4个边的坐标来表示一个矩形。这些坐标值属性可以被直接访问,用width()和
height()方法可以获取矩形的宽和高。注意:大多数方法不会检查这些坐标分类是否错误(也就是left<=right和top&
lt;=bottom).
RectF一共有四个构造方法:
RectF()构造一个无参的矩形
RectF(float left,float top,float right,float bottom)构造一个指定了4个参数的矩形
RectF(Rect F r)根据指定的RectF对象来构造一个RectF对象(对象的左边坐标不变)
RectF(Rect r)根据给定的Rect对象来构造一个RectF对象
RectF提供了很多方法,下面介绍几个方法:
Public
Boolean contain(RectF
r);判断一个矩形是否在此矩形内,如果在这个矩形内或者和这个矩形等价则返回true,同样类似的方法还有public Boolean
contain(float left,float top,float right,float bottom)和public Boolean
contain(float x,float y)。
Public void union(float x,float y)更新这个矩形,使它包含矩形自己和(x,y)这个点。
RectF类提供的方法都比较简单,容易理解,再此就不再一一赘述
Android.graphics.Rect类,这个类同android.graphics.RectF很相似,不同的地方是Rect类的坐标是用整形表示的,而RectF的坐标是用单精度浮点型表示的。
七、Point类android.graphics.Point
这个类从字面意思就可以看出它跟点有关系,是点的一个对象类。
这个类有两个属性,分别是:X坐标和y坐标。
构造函数有三个:Point(),Point(int x,int y),Point(Point p)
主要方法有:
Public void set(x,y);重新设定一下x,y的坐标
Public final void offset(int dx,int dy);给坐标一个补偿值,值可以使正的也可以是负的。
Public final void negate();否定坐标值。
Point类和android.graphics.PointF类似,不同点是前者坐标值的类型是int型,而后者的坐标值是float型。除此之外PointF类多加了几个方法,比如:
Public final float length();返回(0,0)点到该点的距离。
Public static float length(float x,float y);返回(0,0)点到(x,y)点的距离。
下面的例子能让大家很好的了解以上几个类的用法:
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.argb(255, 255, 255, 255));
Rect rect = new Rect(10, 20, 30, 40);
canvas.drawRect(rect, paint);
RectF rectF = new RectF(40.5f, 20.5f, 60.5f, 40.5f);
canvas.drawRect(rectF, paint);
paint.setStyle(Style.STROKE);
canvas.drawRect(10, 50, 30, 80, paint);
}
另外我们可以通过Canvas画图的方法轻松的画一个图片,运行的效果和原代码如下:
这个比较简单,直接看代码吧.
package p.com;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
public class PActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView myView = new MyView(this);
myView.loadLogo();
setContentView(myView);
}
private class MyView extends View {
public MyView(Context context) {
super(context);
}
Bitmap bLogo;
private final Paint mPaint = new Paint();
/**
* 装在logo
*/
public void loadLogo() {
Resources r = this.getContext().getResources();
Drawable logo = r.getDrawable(R.drawable.omslogo);
Bitmap bitmap = Bitmap.createBitmap(200, 100,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
logo.setBounds(0, 0, 200, 100);
logo.draw(canvas);
bLogo = bitmap;
}
protected void onDraw(Canvas canvas) {
if(bLogo != null){
canvas.drawBitmap(bLogo, 0, 0, mPaint);
}
}
}
}
阅读(2712) | 评论(0) | 转发(2) |
0
上一篇:Canvas和Paint实例
下一篇:Android AIDL 分析 例子 源码
相关热门文章
给主人留下些什么吧!~~
评论热议
请登录后评论。
登录 注册