スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



Graphics.drawImage()の移植

今日はGraphics.drawImage()の移植しています。
画像描画はよくやることなので,しっかり実装していきたいな。

Canvasクラス内で画像を描画するメソッドを探したところ,
多分drawBitmapがそれにあたると。

計7コありますねw

今回はリソースフォルダに置いたpngファイルから読み込むということで,
Bitmapクラスを使用した描画関数を使用していくと思います。

BitmapファイルはBitmapFactoryクラスから生成することができる。

http://developer.android.com/intl/ja/reference/android/graphics/BitmapFactory.html#decodeResource(android.content.res.Resources, int)

Imageクラスの代わりがBitmapクラスになるでしょうwww

public void drawBitmap (Bitmap bitmap, Matrix matrix, Paint paint)
public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)
public void drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)
public void drawBitmap (Bitmap bitmap, float left, float top, Paint paint)

の4つになります。
Matrixを引数に持つメソッドは回転や縮小などの変形しながらの描画で,今回にはあてはまらず。
Rectを引数に持つクラスは,拡大・縮小をして描画するときのケースなので,今回にはあてはまらず。

となるとfloatを引数に持つメソッドだな...
とリファレンスを読むと...。

Draw the specified bitmap, with its top/left corner at (x,y), using the specified paint, transformed by the current matrix.

現在のMatrixによって変形されます...ってオイ。
CanvasクラスにはsetMatrixメソッドが用意されいていて,
この値が反映されてしまうようですね。

全体が変形しているときはそれにあわせるということでしょう。
移植時は変形なんて使わないからサー,ここは無視するか...。

もし心配であれば現在のMatrixを取得して,描画後に戻してあげるという作業が必要になるでしょう。

で実際に描画したら...。
Canvas.scaleに設定した倍率が影響されていました。
フォントのときはこの値を設定していないと,画面のdpiにあわせたサイズ(dip, dp)にならなかったのですが...。

また画像が汚い...。
あるサイトを発見。

http://blog.svartalfheim.jp/?p=380

今日中に終わらせようとしたけど...,
BitmapFactoryで画像がDPIに従って拡大・縮小されて読まれるが,
座標系は拡大されないことがわかった。

Canvas.scale()メソッドで設定した値が画像に対しても有効か,
どういうケースで有効かはまた次回以降に持ち越し...。



・番外

drawBitmapMeshってなに???
http://sakef.jp/blog/2011/02/android04_image_translation/

ん~無視w
いずれやります,きっとw

関連記事
スポンサーサイト

テーマ : ゲーム開発
ジャンル : コンピュータ




コメントの投稿

非公開コメント

アクセス
あなたは
キーワード
カテゴリー
最近の記事
リンク
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

WEB検索
Google

RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。