前两天在博客发了在例子 android Canvas类介绍
http://byandby.iteye.com/blog/825330 建议大家 点进去 看一看 不然下边没办法 继续啊。 我还是把这个例子的代码贴出来 大家一起看看吧。
package com.yarin.android.Examples_05_04;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View implements Runnable {
/* 声明Paint对象 */
private Paint mPaint = null;
public GameView(Context context) {
super(context);
/* 构建对象 */
mPaint = new Paint();
/* 开启线程 */
new Thread(this).start();
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
/* 设置画布的颜色 */
canvas.drawColor(Color.BLACK);
/* 设置取消锯齿效果 */
mPaint.setAntiAlias(true);
/* 设置裁剪区域 */
canvas.clipRect(10, 10, 280, 260);
/* 线锁定画布 */
canvas.save();
/* 旋转画布 */
canvas.rotate(45.0f);
/* 设置颜色及绘制矩形 */
mPaint.setColor(Color.RED);
canvas.drawRect(new Rect(15, 15, 140, 70), mPaint);
/* 解除画布的锁定 */
canvas.restore();
/* 设置颜色及绘制另一个矩形 */
mPaint.setColor(Color.GREEN);
canvas.drawRect(new Rect(150, 75, 260, 120), mPaint);
}
// 触笔事件
public boolean onTouchEvent(MotionEvent event) {
return true;
}
// 按键按下事件
public boolean onKeyDown(int keyCode, KeyEvent event) {
return true;
}
// 按键弹起事件
public boolean onKeyUp(int keyCode, KeyEvent event) {
return false;
}
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
return true;
}
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// 使用postInvalidate可以直接在线程中更新界面
postInvalidate();
}
}
}
不知道大家看完这个例子 有没有 有一些疑问?首先跟大家说明一下 这里 这个
canvas.rotate(45.0f)
方法 我们都知道它是旋转画布 这里提示一下 它是顺时针旋转。 其实我的疑问就是 下边这2句代码
//绘制矩形
canvas.drawRect(new Rect(150, 75, 260, 120), mPaint);
//设置裁剪区域
canvas.clipRect(10, 10, 280, 260);
我对它们的参数有些疑问 我不知道 android 它是怎么在一个 Canvas对象上 绘制出一个矩形?
new Rect(150,75,260,120)里边这些参数 的数字指明了什么那些值?android 绘制一个矩形以哪里为坐标原点? ---》我现在就告诉大家 是以屏幕的左上角。 好 我们现在 就带着疑问来 看看 android到底怎么在画布上 绘制一个矩形
先说这句
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) 的参数含义是一样的。
这里向大家说明一个问题 接着说吧 还是上边这个矩形
new Rect(150,75,260,120)
我们应该怎么把它放到屏幕的右下角,就是和屏幕的右侧和下侧都挨上 坐标是多少?我的屏幕是 320*480 按道理这个矩形的坐标应该是(210,435,320,480) 这其实 应该是正确的结果 ,但是如果把坐标改成这个 你运行一下 其实 这个矩形就消失在了屏幕上。 刚开始我困惑至极 也不知道怎么回事,后来发现 我们屏幕的 状态栏 和 标题栏 一共占了 50 正确的坐标应该是 (210,385,320,430); 我们还是来看张图 那个绿色的矩形 就是我们想要的效果。
这个时候它就在屏幕的右下角。 这里还是有疑问,就算 状态栏 和 标题栏 占去了 50 但是矩形最下面那条线 的位置应该还是 480啊 ! 这是没错的啊 怎么会变成 430 了 很好 我也不知道是怎么回事 我怀疑 是坐标原点 下移 坐标原点 在 状态栏和标题栏的底线。 我这里只是猜测,如果有高手知道 还请告知。谢谢。 哦 对了 这里有一个不错的例子 介绍 怎么获取 状态栏 和 标题栏的 高度
http://blog.csdn.net/pilou5400/archive/2010/11/18/6018422.aspx 大家 可以去看看。
- 大小: 40.9 KB
- 大小: 23.3 KB
分享到:
相关推荐
`drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)`是`drawBitmap()`方法的一个重载版本,其参数含义如下: 1. **Bitmap bitmap**: 这是你要绘制的位图对象,通常是从资源文件、内存缓存或者直接创建的...
`Rect`类在Android开发中主要用于表示一个矩形区域,该类包含了四个整型成员变量:`left`、`top`、`right`和`bottom`,分别代表矩形左上角的横纵坐标及右下角的横纵坐标。这与Java标准库中的`Rectangle`类有所不同,...
对于坐标图,开发者可能会使用`Canvas`类来绘制图形,`Paint`类来设置线条颜色和样式,以及`Rect`类来定义坐标轴的边界。此外,可能还会用到`Path`类来构建折线路径。 `res`目录则包含应用的资源文件,如布局文件...
在Android开发中,坐标画矩形是一项基本的图形绘制任务,尤其在进行用户交互或游戏开发时非常常见。本课程设计旨在教你如何通过输入坐标在Android应用的画布上绘制矩形,并且提供了Eclipse IDE作为开发环境。下面将...
通过创建一个位图的XY Chart来深入学习Android绘图类Rect、Paint、Bitmap与Canvas,是一种有效掌握Android图形处理机制的方式。在这个过程中,我们将重点理解这些核心类的作用以及它们之间的相互作用,从而能够构建...
Android 应用坐标系详解 Android 坐标系是理解Android用户界面(UI)布局和交互的关键概念。它是一个三维坐标系统,其中Z轴指向屏幕外,X轴从左向右延伸,而Y轴则从屏幕顶部向下。这个坐标系决定了视图的位置和大小...
在Android开发过程中,有时我们需要将屏幕坐标、物理坐标或者地图坐标等不同的坐标系统转换到自定义View上的像素坐标,以便进行精准的绘制或者交互。这个"Android-一个小的坐标转化工具"就是一个解决此类问题的实用...
总结起来,Android 的 Accessibility 服务为我们提供了一个强大且灵活的接口,可以获取到系统全局任何控件的名称和坐标信息。通过适当地配置服务并监听 AccessibilityEvent,开发者可以实现各种自定义功能,增强应用...
Unity 屏幕坐标转RectTransform局部坐标 1.效果展示:https://blog.csdn.net/qq_26318597/article/details/131331751 2.示例场景:把鼠标的屏幕坐标转成Image的本地坐标,左下角(0,0)=》 右上角(1,1) 3.示例...
本文将详细讲解如何实现Android设备的截屏操作,以及如何通过编程方式向屏幕发送点击坐标,模拟用户触摸事件。 一、Android截屏 1. **系统自带截屏**:Android设备通常都提供了快捷键进行截屏,通常是同时按下电源...
// 更新Rect对象的坐标,使其包含View在屏幕上的完整位置 mChangeImageBackgroundRect.left = location[0]; mChangeImageBackgroundRect.top = location[1]; mChangeImageBackgroundRect.right = ...
在Windows编程中,坐标系统是理解用户界面交互的基础。VC++作为Microsoft的C++开发环境,经常用于构建桌面应用程序,这就涉及到屏幕坐标和窗口坐标的转换。屏幕坐标系统是整个显示器上的全局坐标系统,而窗口坐标...
本案例中,"draw rect实现的圆形进度条"是一个由zhouxing5311开发的开源项目,名为ZZCircleProgress。这个项目利用了Core Graphics框架中的`drawRect:`方法来绘制一个可定制的圆形进度条,它允许开发者自由地调整...
在Unity 3D游戏开发中,坐标系统是基础概念之一,包括了绝对坐标和相对坐标。绝对坐标是指在全局空间中的位置,而相对坐标则是在父对象局部空间内的位置。理解这两种坐标系统的转换对于实现复杂的场景布局和物体运动...
上面的代码创建了一个Rect对象,并将其设置为一个矩形区域,左上角坐标为(0, 0),宽度和高度分别为width和height。 三、Canvas类 Canvas类是Android中的一种图形绘制类,主要用于实现各种图形的绘制工作。 ...
`rectbox`函数的出现,简化了这个过程,使得用户可以直接指定矩形的边界坐标,提高了代码的可读性和效率。 在压缩包中,有两个文件:`rectbox.m`和`rectbox_test.m`。`rectbox.m`是`rectbox`函数的源代码,包含了...
Pyxel.Draw.Rect矩形を描画する。演示特徴行7行!开発环境2020-03-30 4 Model B Rev 1.2 Buster 10.0 2019-09-26bash 5.0.3(1)-发布的Python 3.8.2 1.3.1$ uname -aLinux raspberrypi 4.19.97-v7l+ # 1294 SMP Thu...
首先,`Rect`类通常包含四个属性:`x`(左边缘坐标)、`y`(上边缘坐标)、`width`(矩形宽度)和`height`(矩形高度)。这些属性可以用来创建和定位矩形。例如,`Rect(10, 20, 30, 40)`表示一个左上角位于坐标(10, ...
Android坐标系统是自定义控件开发中的核心概念之一,它涉及到UI元素的位置计算和交互处理。在Android系统中,坐标系被用来确定每个View在屏幕上的精确位置,这对于理解和实现复杂的布局以及动态动画至关重要。 首先...
在本压缩包"IntRect.rar_intrect"中,我们关注的是一个名为"IntRect"的特定模块,它是QT库在处理矩形整数坐标时的一个工具。下面我们将深入探讨这个"IntRect"类及其在QT中的应用。 "IntRect"通常代表一个矩形区域,...