2016-11-19 19 views
2

ここで提案した解決方法を試しましたAndroid: How to overlay-a-bitmap/draw-over a bitmap?。私は仕事をしているようですが、少し不自然なイメージがありました。ビットマップをオーバーレイする方法

before-overlay

after-overlay

enter image description here enter image description here

私はスタートを切り替えると、キャンバスに描画を停止するように私の編集アイコンを設定しています。ユーザーが描画を停止すると、キャンバスのビットマップとimageViewとoverlay canvasのビットマップをimageViewに取得します。 スクリーンショットから分かるように、imageViewはラップトップイメージで、キャンバスのビットマップは上向きの矢印です。 ここに私のオーバーレイ機能があります。

private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) { 
     Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig()); 
     Canvas canvas = new Canvas(bmOverlay); 
     canvas.drawBitmap(bmp1, new Matrix(), null); 
     canvas.drawBitmap(bmp2, new Matrix(), null); 
     return bmOverlay; 
    } 

私はアンドロイドには新しく、この点についていくつかの助けに感謝します。 ありがとう!

答えて

0

なしは、グラフィックスLIBSに深く行くことを行うための最も簡単な方法は、このレイアウトで、でframeLayoutを使用している彼らがレイアウトに追加されたあなたは順序で互いに上下ビューを配置することができ、例:

<FrameLayout> 
    <ImageView android:id="@+id/imageView1" /> 
    <ImageView android:id="@+id/imageView2" /> 
</FrameLayout> 

上記の例では、imageView2はimageView1と重複しますが、これは画像を別の画像にオーバーレイするのが最も速い方法です。このアプローチでは、Viewの子孫を上に置くことができます。

+0

オーバーレイ後、オーバーレイされたビットマップを含む.jpgファイルを作成する必要があります。 –

+0

FrameLayoutからjpgを作成するのに役立ちます:http://stackoverflow.com/questions/35810630/creating-image-from-viewまたはhttp://stackoverflow.com/questions/3095080/create-image-from-view- view-screen-in-android – ararog

+0

@ ararogはい、できますが、私は最高のデザインを実現したいと思います。私はキャンバスのためのドキュメントを読むために先に進んだが、 'top'、' left'と 'paint'として渡される必要があるものを理解することはできません。 (SepJaPro2.4で解決策をチェックしてください) –

3

私はあなたが望むものを達成するために、このようなものを使用することができると思う:

Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG); 
Canvas result = new Canvas(underlayBitmap); 
result.drawBitmap(overlayBitmap, left, top, paint); 

あなたがあなたのオーバーレイを描画したい上辺と左辺を与えることができます。

これが役に立ちます。

+0

は、オーバーレイ関数のコードを追加しました:) –

+0

私は、 'left'、' top'、 'paint'の値をどうすればよいか分かりません。私はドキュメントを読んだが、これを理解できなかった。私は 'bmp1' –

+0

に' bmp2'をオーバーレイしたいと思います。最初にbmp1(最下層)からキャンバスを取得し、そのキャンバスを使用します.brawbitmap(bmp2,0,0、 –

関連する問題