`
flycomos.lee
  • 浏览: 280465 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android Canvas类介绍

 
阅读更多
  1. package  com.yarin.android.Examples_05_04;  
  2.   
  3. import  android.content.Context;  
  4. import  android.graphics.Canvas;  
  5. import  android.graphics.Color;  
  6. import  android.graphics.Paint;  
  7. import  android.graphics.Rect;  
  8. import  android.view.KeyEvent;  
  9. import  android.view.MotionEvent;  
  10. import  android.view.View;  
  11.   
  12. public   class  GameView  extends  View  implements  Runnable {  
  13.     /* 声明Paint对象 */   
  14.     private  Paint mPaint =  null ;  
  15.   
  16.     public  GameView(Context context) {  
  17.         super (context);  
  18.         /* 构建对象 */   
  19.         mPaint = new  Paint();  
  20.   
  21.         /* 开启线程 */   
  22.         new  Thread( this ).start();  
  23.     }  
  24.   
  25.     public   void  onDraw(Canvas canvas) {  
  26.         super .onDraw(canvas);  
  27.   
  28.         /* 设置画布的颜色 */   
  29.         canvas.drawColor(Color.BLACK);  
  30.   
  31.         /* 设置取消锯齿效果 */   
  32.         mPaint.setAntiAlias(true );  
  33.   
  34.         /* 设置裁剪区域 */   
  35.         canvas.clipRect(10 10 280 260 );  
  36.   
  37.         /* 线锁定画布 */   
  38.         canvas.save();  
  39.         /* 旋转画布 */   
  40.         canvas.rotate(45 .0f);  
  41.   
  42.         /* 设置颜色及绘制矩形 */   
  43.         mPaint.setColor(Color.RED);  
  44.         canvas.drawRect(new  Rect( 15 15 140 70 ), mPaint);  
  45.   
  46.         /* 解除画布的锁定 */   
  47.         canvas.restore();  
  48.   
  49.         /* 设置颜色及绘制另一个矩形 */   
  50.         mPaint.setColor(Color.GREEN);  
  51.         canvas.drawRect(new  Rect( 150 75 260 120 ), mPaint);  
  52.     }  
  53.   
  54.     // 触笔事件   
  55.     public   boolean  onTouchEvent(MotionEvent event) {  
  56.         return   true ;  
  57.     }  
  58.   
  59.     // 按键按下事件   
  60.     public   boolean  onKeyDown( int  keyCode, KeyEvent event) {  
  61.         return   true ;  
  62.     }  
  63.   
  64.     // 按键弹起事件   
  65.     public   boolean  onKeyUp( int  keyCode, KeyEvent event) {  
  66.         return   false ;  
  67.     }  
  68.   
  69.     public   boolean  onKeyMultiple( int  keyCode,  int  repeatCount, KeyEvent event) {  
  70.         return   true ;  
  71.     }  
  72.   
  73.     public   void  run() {  
  74.         while  (!Thread.currentThread().isInterrupted()) {  
  75.             try  {  
  76.                 Thread.sleep(100 );  
  77.             } catch  (InterruptedException e) {  
  78.                 Thread.currentThread().interrupt();  
  79.             }  
  80.             // 使用postInvalidate可以直接在线程中更新界面   
  81.             postInvalidate();  
  82.         }  
  83.     }  
  84. }  



不知道大家看完这个例子 有没有 有一些疑问?首先跟大家说明一下 这里 这个

Java代码  收藏代码
  1. canvas.rotate( 45 .0f)  

方法 我们都知道它是旋转画布 这里提示一下 它是顺时针旋转。 其实我的疑问就是 下边这2句代码

Java代码  收藏代码
  1. //绘制矩形   
  2. canvas.drawRect(new  Rect( 150 75 260 120 ), mPaint);  
  3. //设置裁剪区域   
  4. canvas.clipRect(10 10 280 260 );  


我对它们的参数有些疑问 我不知道 android 它是怎么在一个 Canvas对象上 绘制出一个矩形?new Rect(150,75,260,120) 里边这些参数 的数字指明了什么那些值?android 绘制一个矩形以哪里为坐标原点? ---》我现在就告诉大家 是以屏幕的左上角。 好 我们现在 就带着疑问来 看看 android到底怎么在画布上 绘制一个矩形

先说这句

Java代码  收藏代码
  1. new  Rect( 150 75 260 120 )  

  这个构造方法需要四个参数这四个参数 指明了什么位置 ?我们就来解释怎么画 这个 矩形
这四个 参数 分别代表的意思是: left   top   right   bottom  上下左右呗。啊,不是 是 左 上 右 下。 下面给大家解释 
left : 矩形左边的X坐标   150        ---->图片中的A点
top:    矩形顶部的Y坐标    75         ---->图片中的B点
right :  矩形右边的X坐标    260       ----->图片中的C点
bottom: 矩形底部的Y坐标  120     ------->图片中的D点

不知道大家到这里 能不能马上就能想象出 这个矩形应该在屏幕的什么位置 我是不能 就在纸上画了画 下边来张图  我模拟器的 屏幕是 320*480 我也是 画一个大概的位置 主要是明白 那几个点在什么地方。 在图中 我分别以 A B  C D 代表 那四个点  图片中红色的部分就是我们要画的矩形。



canvas.clipRect(10, 10, 280, 260) 这个裁剪画布的方法 的参数含义和 我们new Rect(150, 75, 260, 120) 的参数含义是一样的。

     这里向大家说明一个问题 接着说吧 还是上边这个矩形

Java代码  收藏代码
  1. new  Rect( 150 , 75 , 260 , 120 )  

我们应该怎么把它放到屏幕的右下角,就是和屏幕的右侧和下侧都挨上   坐标是多少?我的屏幕是 320*480  按道理这个矩形的坐标应该是(210,435,320,480) 这其实 应该是正确的结果 ,但是如果把坐标改成这个 你运行一下 其实 这个矩形就消失在了屏幕上。 刚开始我困惑至极 也不知道怎么回事,后来发现 我们屏幕的 状态栏 和 标题栏 一共占了 50  正确的坐标应该是 (210,385,320,430);  我们还是来看张图 那个绿色的矩形 就是我们想要的效果。

分享到:
评论

相关推荐

    android canvas 画曲线图 画三角形(多边形)

    Canvas是Android中的一个类,它提供了在Bitmap上绘制图形的方法。通常,我们会在View的onDraw()方法中实例化Canvas,并调用其drawXXX()系列方法来绘制图形。 1. **画曲线图**: - 创建一个自定义View类,重写...

    Android canvas.save()和canvas.restore()的理解

    在Android图形系统中,`Canvas`是用于在Bitmap或Surface上进行绘图操作的重要类。它提供了各种绘制路径、文本、矩形、圆形以及其他图形的方法。`save()`和`restore()`是`Canvas`中两个非常关键的方法,它们主要用于...

    Android Canvas绘图Demo

    在Android开发中,Canvas是用于在屏幕上绘制图形的重要工具,它是Android Graphics系统的一部分。Canvas类提供了各种方法,让我们能够绘制线条、形状、文本以及位图等。本篇将深入探讨`Android Canvas绘图`的相关...

    Android 自定义画布canvas 实现绘制和清空画布功能

    首先,我们需要创建一个自定义View类,这个类将继承自Android的View或SurfaceView。在这个自定义View中,我们将重写`onDraw()`方法,这是绘制图形的主要入口。在`onDraw()`方法中,系统会为我们提供一个Canvas对象,...

    Android canvas drawBitmap方法详解及实例

    在Android开发中,Canvas是用于在屏幕上绘制图形和图像的核心组件。`drawBitmap()`方法是Canvas的一个关键函数,用于在Canvas上绘制Bitmap图像。本文将深入解析`drawBitmap()`方法的参数及其用法,并通过实例来说明...

    Android Canvas使用集合

    在Android开发中,Canvas是用于在屏幕上绘制图形的重要工具,它是Android Framework提供的核心绘图类。Canvas使用集合意味着我们可以利用它来绘制一系列图形、文本、图像等元素,从而实现自定义视图或控件。本篇文章...

    Android中Canvas绘图基础详解

    该代码是一个完整的Android工程,详细演示如了如何使用Android中的各种drawXXX方法,以及画笔Paint如何影响绘制的效果。 具体参见博文: http://blog.csdn.net/iispring/article/details/49770651

    Android 画布Canvas之连线动画Demo

    在Android开发中,Canvas是用于在屏幕上绘制2D图形的核心组件。`Canvas`类提供了丰富的绘图方法,让我们能够在Bitmap或者Surface上绘制线条、形状、文本等元素。在这个"Android画布Canvas之连线动画Demo"中,我们将...

    android利用Paint在Canvas上实现竖排写字

    在Android开发中,Canvas是用于在屏幕上绘制图形和文本的核心组件。Paint对象则是用来设置绘制样式,如颜色、字体、线宽等。本教程将详细讲解如何利用Paint和Canvas在Android应用中实现在竖直方向上写字。 1. **...

    android 使用canvas把矩形图片变成圆角矩形显示

    Canvas是Android系统提供的一个用于绘制2D图形的对象,它可以对Bitmap进行操作,比如画线、画圆、画矩形等。在Android中,我们可以通过重写View的`onDraw()`方法来利用Canvas进行自定义绘图。 要将矩形图片变为圆角...

    android canvas 画图

    在Android开发中,Canvas是用于在屏幕上绘制图形的重要工具,它是`android.graphics.Canvas`类的实例。本篇文章将深入探讨如何使用Android Canvas进行图形绘制,包括基本概念、常用方法以及实际应用示例。 Canvas...

    android-canvas.rar_ android Canvas_android canvas_android canv

    Bitmap是一个可以存储像素数据的类,我们可以将它看作是一块画布,而Canvas则是我们的画笔,用来在Bitmap上进行绘画操作。例如,我们可以通过`drawRect()`来绘制矩形,通过`drawText()`来添加文字,通过`drawBitmap...

    Android-实现在Kotlin中更方便使用canvas

    在Android开发中,Canvas是用于在屏幕上绘制2D图形的核心组件。Kotlin作为一种现代、简洁的编程语言,已经成为Android开发的首选。本篇文章将深入探讨如何在Kotlin中更有效地利用Canvas进行绘制,以实现丰富的视觉...

    Android canvas 放大 缩小 平移

    总的来说,Android的Canvas和Matrix类为开发者提供了强大的图形绘制能力,通过熟练掌握它们,你可以创建出富有创新和互动性的用户界面。不断地实践和调试,将有助于你更好地理解和运用这些知识。

    android canvas画人

    在Android开发中,Canvas是图形绘制的核心类,它提供了在Bitmap上进行绘制的基本接口。"android canvas画人"这个主题,意味着我们将探讨如何利用Canvas在Android应用中绘制一个人物图像。下面将详细介绍Canvas的使用...

    Android下使用Canvas画图

    - Canvas是Android系统提供的一个类,它提供了在二维画布上进行绘制的方法。 - 通常,我们会在一个Bitmap对象上操作Canvas,因为Bitmap是Android中的像素存储介质,Canvas则负责在Bitmap上进行绘制操作。 - 除了...

    Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)

    在实际开发中,通常会创建一个自定义的View类,重写`onDraw()`方法,在其中使用Canvas进行绘制。Paint对象是Canvas的得力助手,它可以设置颜色、样式、抗锯齿、纹理等多种属性,以实现更丰富的绘图效果。 除了基本...

    使用Canvas类绘制android机器人

    在Android开发中,Canvas是图形绘制的核心类,它允许开发者在Bitmap或者其他可绘图对象上进行画图操作。本文将深入探讨如何利用Canvas类来绘制一个Android机器人,从而理解其基本概念、方法以及如何实现复杂的图形...

    android 画笔和Canvas介绍.

    使用文档中介绍了Canvas和Paint的方法介。使用方便,适合开发者

Global site tag (gtag.js) - Google Analytics