Android draw Rect座標図
12805 ワード
先日ブログでandroid Canvasクラス紹介http://byandby.javaeye.com/blog/825330
中に入ってみることをお勧めします.そうしないと、下には続けられませんよ.私はやはりこの例のコードを貼ってみましょう.
皆さんはこの例を見ていくつか疑問がありますか?まずここについて説明します
Javaコード canvas.rotate(45.0f)
方法はキャンバスを回転させることを知っています.ここでは時計回りに回転することを示しています.実は私の疑問は下の2つのコードです
Javaコード//長方形 を描く canvas.drawRect(new Rect(150, 75, 260, 120), mPaint); //裁断領域 を設定 canvas.clipRect(10, 10, 280, 260);
パラメータに疑問がありますandroidはどのようにCanvasオブジェクトに矩形を描きますか?New Rect(150,75260120)では、これらのパラメータの数字はどのような値を示していますか?android長方形を描く座標の原点はどこですか?---スクリーンの左上隅で教えてあげます.では疑問を持ってandroidがキャンバスに矩形を描く方法を見てみましょう
Javaコード new Rect(150, 75, 260, 120)
この構造方法には4つのパラメータが必要です.この4つのパラメータはどの位置を示していますか.この矩形を描く方法という4つのパラメータがそれぞれ表す意味を説明します.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でその4つの点のピクチャーの中の赤い部分を代表して私たちが描く矩形です. canvas.clipRect(10,10,280,260)このキャンバスを裁断する方法のパラメータの意味は,我々のnew Rect(150,75,260,120)のパラメータの意味と同じである.ここで皆さんに一つの問題を説明します.次に、上の矩形です.
Javaコード new Rect(150,75,260,120)
スクリーンの右下隅にどうやって置くべきですか?スクリーンの右側と下側と座標を並べていくらですか?私のスクリーンは320*480です.この矩形の座標は(210435320480)正しい結果になるはずですが、座標をこれに変更すると、実際にはこの矩形がスクリーンに消えてしまいます.最初は困惑して何が起こっているのか分からなかったが、私たちの画面のステータスバーとタイトルバーが全部で50の正しい座標を占めていることに気づいた(210385320430).私たちはやはり図の緑の矩形を見て、私たちが望んでいる効果です.この時点で画面の右下にあります.ここで疑問ですが、ステータスバーやタイトルバーが50を占めていても矩形の一番下の線の位置は480でしょう.これは間違いないですね.どうして430になったのですか.いいですね.私も何が起こっているのか分かりません.座標原点を下に移動して座標原点がステータスバーとタイトルバーのベースラインにあるのではないかと疑っています.私のところは推測にすぎません.もし達人が知っていたら教えてください.ありがとうございます.ところで、ここでは、ステータスバーとタイトルバーの高さhttp://blog.csdn.net/pilou5400/archive/2010/11/18/6018422.aspxを取得する方法を紹介します.
中に入ってみることをお勧めします.そうしないと、下には続けられませんよ.私はやはりこの例のコードを貼ってみましょう.
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
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コード
方法はキャンバスを回転させることを知っています.ここでは時計回りに回転することを示しています.実は私の疑問は下の2つのコードです
Javaコード
パラメータに疑問がありますandroidはどのようにCanvasオブジェクトに矩形を描きますか?New Rect(150,75260120)では、これらのパラメータの数字はどのような値を示していますか?android長方形を描く座標の原点はどこですか?---スクリーンの左上隅で教えてあげます.では疑問を持ってandroidがキャンバスに矩形を描く方法を見てみましょう
Javaコード
この構造方法には4つのパラメータが必要です.この4つのパラメータはどの位置を示していますか.この矩形を描く方法という4つのパラメータがそれぞれ表す意味を説明します.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でその4つの点のピクチャーの中の赤い部分を代表して私たちが描く矩形です. canvas.clipRect(10,10,280,260)このキャンバスを裁断する方法のパラメータの意味は,我々のnew Rect(150,75,260,120)のパラメータの意味と同じである.ここで皆さんに一つの問題を説明します.次に、上の矩形です.
Javaコード
スクリーンの右下隅にどうやって置くべきですか?スクリーンの右側と下側と座標を並べていくらですか?私のスクリーンは320*480です.この矩形の座標は(210435320480)正しい結果になるはずですが、座標をこれに変更すると、実際にはこの矩形がスクリーンに消えてしまいます.最初は困惑して何が起こっているのか分からなかったが、私たちの画面のステータスバーとタイトルバーが全部で50の正しい座標を占めていることに気づいた(210385320430).私たちはやはり図の緑の矩形を見て、私たちが望んでいる効果です.この時点で画面の右下にあります.ここで疑問ですが、ステータスバーやタイトルバーが50を占めていても矩形の一番下の線の位置は480でしょう.これは間違いないですね.どうして430になったのですか.いいですね.私も何が起こっているのか分かりません.座標原点を下に移動して座標原点がステータスバーとタイトルバーのベースラインにあるのではないかと疑っています.私のところは推測にすぎません.もし達人が知っていたら教えてください.ありがとうございます.ところで、ここでは、ステータスバーとタイトルバーの高さhttp://blog.csdn.net/pilou5400/archive/2010/11/18/6018422.aspxを取得する方法を紹介します.