canvas.draw()
同じビットマップにオーバーレイする複数のフレームがあるという問題があります。そして私はこれを行うことに成功しました。しかし、問題は、同じ方法で異なる境界線を使用して別のフレームを適用する場合、境界線が古いものに重なることです。
void hm(){
Bitmap border = BitmapFactory.decodeResource(getResources(), R.drawable.vignette2);
int width = bmp.getWidth();
int height = bmp.getHeight();
change = Bitmap.createScaledBitmap(change, width, height, false);
Canvas canvas = new Canvas(change);
Bitmap scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
canvas.drawBitmap(scaledBorder, 0, 0,null);
//canvas.drawBitmap(k, 0, 0, null);
view.setImageBitmap(change);
}
そしてここに他の方法があります:
void hm1(){
Bitmap border = BitmapFactory.decodeResource(getResources(), R.drawable.white);
int width = bmp.getWidth();
int height = bmp.getHeight();
change = Bitmap.createScaledBitmap(change, width, height, false);
Canvas canvas = new Canvas(change);
Bitmap scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
canvas.drawBitmap(scaledBorder, 0, 0,null);
//canvas.drawBitmap(k, 0, 0, null);
view.setImageBitmap(change);
}
button1
これで、オーバーレイをクリックするとビューに適用されます。クリックするbutton2
とビューにも適用されますが、古い境界線(「オーバーレイ画像」)は破棄されません。imageviewのすべてのビューを処理するには、異なるビットマップを使用する必要があることを知っています。しかし、私は保存ボタンを使用していますBitmap change
。これは、この画像に境界線を適用して表示したいことを意味します。古い境界線をオーバーレイせずに。
たとえば、私が使用QuickAction
しているのは、クリックを達成しようとしている方法です。
if (actionId == border0){
hm();
}
if (actionId == border1 ){
hm1();
}
if (actionId == border2 ){
}
それは動作しますが、私が言ったように、それは古いものをオーバーレイします。どんな助けでもありがたいです。前もって感謝します。明日解決しました。回答を投稿します:)。