Android Draw Rect座標図
先日ブログでandroid Canvasクラスの紹介をしました
http://byandby.iteye.com/blog/825330皆さん、中に入ってみることをお勧めします.そうしないと、下は続けられませんよ.私はやはりこの例のコードを貼ってみましょう.
皆さんはこの例を見ていくつか疑問がありますか?まずここについて説明します
パラメータに疑問がありますandroidはどのようにCanvasオブジェクトに矩形を描きますか?
New Rect(150,75260120)では、これらのパラメータの数字はどのような値を示していますか?android長方形を描く座標の原点はどこですか?---スクリーンの左上隅で教えてあげます.では疑問を持ってandroidがキャンバスに矩形を描く方法を見てみましょう
まずこの言葉を言います
この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)のパラメータの意味と同じである.
ここで皆さんに一つの問題を説明します.次に、上の矩形です.
このとき画面の右下にあります.ここで疑問ですが、ステータスバーやタイトルバーが50を占めていても矩形の一番下の線の位置は480でしょう.これは間違いないですね.どうして430になったのですか.いいですね.私も何が起こっているのか分かりません.座標原点を下に移動して座標原点がステータスバーとタイトルバーのベースラインにあるのではないかと疑っています.私のところは推測にすぎません.もし達人が知っていたら教えてください.ありがとうございます.ああ、ここでは、ステータスバーとタイトルバーの高さを取得する方法を紹介します.
http://blog.csdn.net/pilou5400/archive/2010/11/18/6018422.aspxみんな行ってみてください.
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,75260120)では、これらのパラメータの数字はどのような値を示していますか?android長方形を描く座標の原点はどこですか?---スクリーンの左上隅で教えてあげます.では疑問を持ってandroidがキャンバスに矩形を描く方法を見てみましょう
まずこの言葉を言います
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)のパラメータの意味と同じである.
ここで皆さんに一つの問題を説明します.次に、上の矩形です.
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みんな行ってみてください.