0

こんにちは私は円形の画像を作成したいと思います魔女は小さな境界線を持ち、グーグルプラスアンドロイドアプリケーションが行うのと同じように、内部にユーザーのプロフィール写真をロードします。問題は、その画像をボタンの描画可能な上部として設定する必要があることです。そのため、次のコードを見つけました。

public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
    canvas.drawBitmap(overlay, 0, 0, paint);
    return new BitmapDrawable(bitmap);
} 

魔女は、あるビットマップ(ユーザーの写真)を別のビットマップ(楕円形)にオーバーレイすることになっていますが、a)円形のビットマップがユーザーのプロフィール写真の上にあり、b)ユーザーのプロフィール写真が大きすぎると考えられます。これを行う方法についての提案、または私が少なくとも正しい方向に進んでいるかどうかについての提案は大歓迎です。

アップデート

私はこのコードを使用して2つの画像を表示することができました:

public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
    int width = overlay.getWidth()-50;
    int height = overlay.getHeight()-50;

    Bitmap b = Bitmap.createScaledBitmap(bitmap, width, height,true);
    Canvas canvas = new Canvas(overlay);
    canvas.save();
    canvas.translate(width,height);
    Matrix matrix = new Matrix();
    canvas.drawBitmap(overlay, matrix, null); 
    canvas.restore();
    canvas.drawBitmap(b,matrix, null);
    BitmapDrawable completeImage = new BitmapDrawable(getResources(),overlay);
    return completeImage;
}  

問題は、プロファイル画像が円形画像に位置合わせされていないことです。プロファイル画像が同じx、y位置から描画されているように、円形画像が描画されます。また、プロフィール写真は次を使用して読み込まれることに注意してください。

bitmap = BitmapFactory.decodeStream((InputStream) new URL(imagepath).getContent());
4

1 に答える 1

1

このコードを使用します (最初にプロフィール写真をスケーリングしてからオーバーレイを適用します)

public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
    Bitmap b = Bitmap.createScaledBitmap(bitmap, overlay.getWidth(), overlay.getHeight(),true);
    Canvas canvas = new Canvas(b);
    Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
    canvas.drawBitmap(overlay, 0, 0, paint);
    return new BitmapDrawable(b);
} 

オーバーレイがプロフィール写真の上にあるという問題の意味がよくわかりませんでした

于 2012-04-11T21:03:36.570 に答える