canvas教程

android.graphics包(2)

字号+ 作者:H5之家 来源:H5之家 2017-08-09 12:02 我要评论( )

六、RectF类android.graphics.RectF和Rect类android.graphics.Rect RectF这个类包含一个矩形的四个单精度浮点坐标。矩形通过上下左右4个边的坐标来表示一个矩形。这些坐标值属性可以被直接访问,用width()和heigh

六、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);
                        }

                }

        }

}

 

android.graphics包-核心渲染包(绘图) - Gobby.X - Gobby.X

阅读(2712) | 评论(0) | 转发(2) |

0

上一篇:Canvas和Paint实例

下一篇:Android AIDL 分析 例子 源码

相关热门文章

给主人留下些什么吧!~~

评论热议

请登录后评论。

登录 注册


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评