[Android]Bitmapの中央寄せ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ひよつこ

[Android]Bitmapの中央寄せ

#1

投稿記事 by ひよつこ » 13年前

お久しぶりです。
ひよつこです。
早速ですが質問させていただきます。

現在Viewのサイズに合わせてBitmapをリサイズし、Viewの中央に寄せる処理をさせたいと思っています。

コード:

	float mWidth,mHeight;	//ImageViewの幅と高さ
	Bitmap bmp = BitmapFactory.decodeFile(画像ファイルのパス);
	float scaleX = mWidth / bmp.getWidth();
	float scaleY = mHeight / bmp.getHeight();
	Matrix matrix = new Matrix();
	if(scaleX < scaleY){
		matrix.preScale(scaleX, scaleX);
		matrix.postTranslate(0, (mHeight - (bmp.getHeight() * scaleX) ) / 2);
	}else if(scaleX > scaleY){
		matrix.preScale(scaleY, scaleY);
		matrix.postTranslate((mWidth - (bmp.getWidth() * scaleY) ) / 2, 0);
	}
	Bitmap bmp2 = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),bmp.getHeight(),matrix,true);
	ImageView.setImageBitmap(bmp2);
と書いたのですが、リサイズされるだけでViewの中央に寄せられません。

何が問題なのでしょうか。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: [Android]Bitmapの中央寄せ

#2

投稿記事 by ISLe » 13年前

Viewのサイズに合わせたいのなら、bmp2を作成するサイズが間違ってませんか?

ひよつこ

Re: [Android]Bitmapの中央寄せ

#3

投稿記事 by ひよつこ » 13年前

bmp2を作成するサイズが間違っているとはcreateBitmap()が間違っているのでしょうか。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: [Android]Bitmapの中央寄せ

#4

投稿記事 by ISLe » 13年前

bmp.getWidth(),bmp.getHeight()というのは元のビットマップの幅や高さではないでしょうか。

Viewのサイズでビットマップを作成しないと余白分がScaleTypeに依存してしまうのでは?

ひよつこ

Re: [Android]Bitmapの中央寄せ

#5

投稿記事 by ひよつこ » 13年前

返信ありがとうございます。

Viewのサイズでビットマップを作成するとはどういうことでしょうか。
createBitmap(元のbitmap,0,0,Viewの幅,Viewの高さ,マトリックス,true);
とすると"元のbitmapより大きい幅のbitmapは作成できない"という内容のエラーが出ます。
やり方が間違っているのでしょうか。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: [Android]Bitmapの中央寄せ

#6

投稿記事 by ISLe » 13年前

ソースビットマップを指定しないでViewと同じ大きさのビットマップを作成し、それに対して描画すれば良いのでは?

そのViewと同じ大きさのビットマップをそのままViewに描画することになりますが。

Viewと同じ大きさのビットマップに描画するコードはViewに直接描画するのと同一のコードになります。

そこまでしてViewに直接描画することを避けたい理由は何でしょうか。
以前のスレでそんなことをおっしゃってましたよね。

ひよつこ

Re: [Android]Bitmapの中央寄せ

#7

投稿記事 by ひよつこ » 13年前

返信ありがとうございます。
Canvasを使って新しいBitmapに描画することで中央寄せが実現できました。

実は現在ビュアーアプリもどきを開発しており、
そのなかでズーム処理やドラッグ処理が必要になっています。
それをMatrixでスムーズに行うために加工済みのBitmapをViewに描画したかったのです。
ズーム処理やドラッグ処理は現在実装中ですが、またつまづいたときはよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る