zoukankan      html  css  js  c++  java
  • Android用canvas画哆啦A梦

    先上图:



    非常easy

    第一步:找到一张哆啦A梦的照片

    第二部:image.setBackgroundResource(R.drawable.XX);

    哆啦A梦就出来了 

    是不是非常easy...







    以上是玩笑话..以下我们用代码来实现

    首先,自己定义一个View,并实现构造方法


    public class MyView extends View {
    
    
    public MyView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    }
    
    
    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    // TODO Auto-generated constructor stub
    }
    
    
    public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
    }
    
    
    } 


    然后在onDraw函数中实现画图

    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    }

    先初始化RectF和Paint

    mRect = new RectF(getWidth(), getHeight(), getRight(), getBottom());
    
    
    if (mPaint == null) {
    mPaint = new Paint();
    } else {
    mPaint.reset();
    }
    mPaint.setAntiAlias(true);// 边缘无锯齿</span>
     


    然后先画最外面蓝色的圆:

    首先给圆的半径radius赋值。然后设置颜色以及style,最后画出一个半径为radius的圆

    radius = getWidth() / 2;
    mPaint.setColor(mBlue);
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, mPaint); 


    然后再画一个半径比这个圆大1的空心圆,显示描边的效果

    mPaint.setColor(mBlack);
    mPaint.setStrokeWidth(mStrokeWidth);
    mPaint.setStyle(Paint.Style.STROKE);// 设置空心
    mRect.set(getWidth() / 8, (getHeight() - radius) * 3 / 4,getWidth() * 3 / 4, getHeight() * 3 / 4 + radius / 2);



    然后画出第二层白色的椭圆。剩下的就不贴代码了,在这里就仅仅是说一下思路


    首先画出最外层蓝色的圆以及描边,然后里面画一个白色的椭圆和描边,然后先画左眼和右眼以及眼珠和瞳孔,接下来画鼻子和胡须,最后再画嘴巴,主要用到的知识点有paint画圆、椭圆、斜线、贝塞尔曲线,代码中有些值我这里为了方便写死了...所以在不同机型上显示出来的效果可能有所差异,但重在思想...

    源代码下载地址:http://download.csdn.net/detail/qq_18612815/9420631




  • 相关阅读:
    6174问题
    阶乘的精确值
    小学生算术
    Primer回顾 数组和指针
    Primer回顾 标准库类型
    绪论
    字符串的存储
    条款39:明智而审慎的使用private继承
    条款34:区分接口继承和实现继承
    条款33:避免遮掩继承而来的名称
  • 原文地址:https://www.cnblogs.com/llguanli/p/7018941.html
Copyright © 2011-2022 走看看