`
xubingok
  • 浏览: 129369 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android画各种几何图形

阅读更多
继承自Android.view.View的 MyView类,重写 MyView的onDraw()方法,一开始就会运行绘制的工作,在onDraw()中以Paint将几何图形绘制在Canvas上,以 paint.setColor() 改变图形颜色、以 paint.setStyle()的设置来控制画出的的图形是空心还是实心。程序的最后一段,就是直接在Canvas写上文字,随着Paint对象里的属性设置,也会有不同的外观模式。


package com.graphices; 
 
import  android.app.Activity;
import android.os.Bundle;
import  android.view.View;
import android.content.Context;
import  android.graphics.Canvas;
import android.graphics.Color;
import  android.graphics.Paint;
import android.graphics.RectF;
import  android.graphics.Path;
import android.graphics.Shader;
import  android.graphics.LinearGradient;
public class GraphicesActivity  extends Activity {
    /** Called when the activity is first created.  */
    @Override
    public void onCreate(Bundle  savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*设置ContentView为自定义的MyVieW*/
        MyView myView=new  MyView(this);
        setContentView(myView);
    }
    /* 自定义继承View 的MyView*/
private class MyView extends View
{
     public  MyView(Context context){
        super(context) ;
     }
      /*重写onDraw()*/
     @Override
     protected void onDraw(Canvas  canvas)
     {   
         super.onDraw(canvas);
         /*设置背景为白色*/
         canvas.drawColor(Color.WHITE);
          Paint  paint=new Paint();
          /*去锯齿*/
           paint.setAntiAlias(true);
          /*设置paint的颜色*/
           paint.setColor(Color.RED);
          /*设置paint的 style 为STROKE:空心*/
          paint.setStyle(Paint.Style.STROKE);
          /*设置paint的外框宽度*/
          paint.setStrokeWidth(3);
          /*画一个空心圆形*/
          canvas.drawCircle(40, 40, 30, paint);
          /*画一个空心正方形*/
          canvas.drawRect(10, 90, 70, 150, paint);
          /*画一个空心长方形*/
          canvas.drawRect(10, 170, 70,200, paint);
           /*画一个空心椭圆形*/
          RectF re=new RectF(10,220,70,250);
          canvas.drawOval(re, paint);
          /*画一个空心三角形*/
           Path path=new Path();
          path.moveTo(10, 330);
           path.lineTo(70,330);
          path.lineTo(40,270);
           path.close();
          canvas.drawPath(path, paint);
          /* 画一个空心梯形*/
          Path path1=new Path();
           path1.moveTo(10, 410);
          path1.lineTo(70,410);
           path1.lineTo(55,350);
          path1.lineTo(25, 350);
           path1.close();
          canvas.drawPath(path1, paint);
          
          /*设置paint 的style为 FILL:实心*/
           paint.setStyle(Paint.Style.FILL);
          /*设置paint的颜色*/
          paint.setColor(Color.BLUE);
          /*画一个实心圆*/
           canvas.drawCircle(120,40,30, paint);
          /*画一个实心正方形*/
          canvas.drawRect(90, 90, 150, 150, paint);
          /*画一个实心长方形*/
          canvas.drawRect(90, 170, 150,200, paint);
          /*画一个实心椭圆*/
          RectF re2=new RectF(90,220,150,250);
           canvas.drawOval(re2, paint);
          /*画一个实心三角形*/
          Path  path2=new Path();
          path2.moveTo(90, 330);
           path2.lineTo(150,330);
          path2.lineTo(120,270);
           path2.close();
          canvas.drawPath(path2, paint);
           /*画一个实心梯形*/
          Path path3=new Path();
           path3.moveTo(90, 410);
          path3.lineTo(150,410);
           path3.lineTo(135,350);
          path3.lineTo(105, 350);
          path3.close();
          canvas.drawPath(path3, paint);
          /*设置渐变色*/
          Shader mShader=new LinearGradient(0,0,100,100,
                  new  int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
                  null,Shader.TileMode.REPEAT);
          paint.setShader(mShader);
        
          /*画一个渐变色圆*/
           canvas.drawCircle(200,40,30, paint);
          /*画一个渐变色正方形*/
          canvas.drawRect(170, 90, 230, 150, paint);
          /*画一个渐变色长方形*/
          canvas.drawRect(170, 170, 230,200, paint);
          /*画一个渐变色椭圆*/
          RectF re3=new RectF(170,220,230,250);
          canvas.drawOval(re3, paint);
          /*画一个渐变色三角形*/
          Path path4=new Path();
          path4.moveTo(170,330);
          path4.lineTo(230,330);
          path4.lineTo(200,270);
          path4.close();
          canvas.drawPath(path4, paint);
          /*画一个渐变色梯形*/
          Path path5=new Path();
           path5.moveTo(170, 410);
          path5.lineTo(230,410);
          path5.lineTo(215,350);
          path5.lineTo(185, 350);
          path5.close();
          canvas.drawPath(path5, paint);
        
			/*画扇形*/
				
			canvas.drawArc(new RectF(0,0,50,50), 0, 60, true, mPaint);
          /*写字*/
          paint.setTextSize(24);
           canvas.drawText(getResources().getString(R.string.str_text1), 240, 50,  paint);
           canvas.drawText(getResources().getString(R.string.str_text2), 240, 120,  paint);
           canvas.drawText(getResources().getString(R.string.str_text3), 240, 190,  paint);
           canvas.drawText(getResources().getString(R.string.str_text4), 240, 250,  paint);
           canvas.drawText(getResources().getString(R.string.str_text5), 240, 320,  paint);
           canvas.drawText(getResources().getString(R.string.str_text6), 240, 390,  paint);  
     }
}
}
0
0
分享到:
评论

相关推荐

    Android利用canvas画各种图形源码下载

    Android利用canvas画各种图形

    简单的几何图形识别程序源代码

    该压缩包共有两个工程,其中一个是用来生成动态链接库,另一个是一个简单的基于对话框的MFC程序,通过该程序调用动态链接库的函数,完成简单的几何图形识别。

    Android简单画图应用开发

    在Androidstudio上实现的简单画图软件,功能包括画笔颜色的改变,笔刷大小自定义,几何图形的绘制,实虚线的切换以及橡皮檫功能,保存图像功能还未实现

    android绘制几何图形的实例代码

    本文实例为大家分享了android绘制几何图形展示的具体代码,供大家参考,具体内容如下 效果图: 代码(仅绘制类,不可直接运行): public class MyView extends View { public MyView(Context context, ...

    Android自定义View绘制几何图形

    最近写项目的时候,需要自己好一个矩形,以前没有画过,所以在网上找了一些资料,画好了,我把demo,上传到这和大家交流学习

    绘制几何图形

    完整的android工程,介绍绘制带有渐变色的几何图形,主要使用graphics类

    android开发揭秘PDF

    5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween...

    CanvasFinal:android canvas绘制几何图形,whiteBoard

    先看效果图实现功能拖拽功能一键还原功能绘制文字功能绘制集合图形功能画笔功能橡皮擦github地址:功能展望:1) 基于canvasWrapper实现新手引导功能2)基于canvasWrapper实现美图秀秀贴纸功能。欢迎start 欢迎贡献...

    NB几何画板 v101.zip

    NB几何画板是一款完全免费的几何做图工具,可以用于绘制动态各种几何图形,支持保存导入导出等各个功能,软件广泛应用于初高中几何教学中,无论是做图、演示、切割,一切数学中可以完成的功能,几何画板将会为你完成...

    Android应用开发揭秘pdf高清版

    5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween...

    《Android应用开发揭秘》附带光盘代码.

     5.2.3 几何图形绘制  5.2.4 字符串绘制  5.2.5 图像绘制  5.2.6 图像旋转  5.2.7 图像缩放  5.2.8 图像像素操作  5.2.9 Shader类介绍  5.2.10 双缓冲技术  5.2.11 全屏显示  5.2.12 获得屏幕属性  5.3 ...

    《Android应用开发揭秘》源码

     5.2.3 几何图形绘制  5.2.4 字符串绘制  5.2.5 图像绘制  5.2.6 图像旋转  5.2.7 图像缩放  5.2.8 图像像素操作  5.2.9 Shader类介绍  5.2.10 双缓冲技术  5.2.11 全屏显示  5.2.12 获得屏幕属性  5.3 ...

    android 手机画笔

    手机画笔,好用...主要是几何图形什么的,下载看看就知道 是不是你想要的了

    Canvas的使用方法

    Canvas 画几何图形,path 使用方法,通过canvas和path自定义画板

    《Google Android SDK开发范例大全(第3版)》.pdf

    7.2 绘制几何图形 404 7.3 手机屏幕保护程序 408 7.4 用手指移动画面里的照片 418 7.5 加载存储卡的gallery相簿 421 7.6 取得手机内置媒体中的图片文件 424 7.7 相片导航向导与设置背景桌面 427 ...

    Google Android SDK开发范例大全(第3版) 1/5

    7.2 绘制几何图形 7.3 手机屏幕保护程序 7.4 用手指移动画面里的照片 7.5 加载存储卡的Gallery相簿 7.6 取得手机内置媒体中的图片文件 7.7 相片导航向导与设置背景桌面 7.8 调整音量大小 7.9 播放mp3资源文件 7.10 ...

    Google Android SDK开发范例大全(第3版) 4/5

    7.2 绘制几何图形 7.3 手机屏幕保护程序 7.4 用手指移动画面里的照片 7.5 加载存储卡的Gallery相簿 7.6 取得手机内置媒体中的图片文件 7.7 相片导航向导与设置背景桌面 7.8 调整音量大小 7.9 播放mp3资源文件 7.10 ...

    Google Android SDK开发范例大全(第3版) 3/5

    7.2 绘制几何图形 7.3 手机屏幕保护程序 7.4 用手指移动画面里的照片 7.5 加载存储卡的Gallery相簿 7.6 取得手机内置媒体中的图片文件 7.7 相片导航向导与设置背景桌面 7.8 调整音量大小 7.9 播放mp3资源文件 7.10 ...

Global site tag (gtag.js) - Google Analytics