Ich verwende Bitmap zum Erstellen digitaler Signatur Image. Beim Speichern der Unterschrift auf dem Gerät wurde nur die Unterschrift mit schwarzem Hintergrund gespeichert. Ich möchte grünen Hintergrund mit Unterschrift.Android: Bitmap: Wie kann Leinwand mit grünem Hintergrund in Android gespeichert werden?
Hier ist es mein Bitmap-Code
// Bitmap View
public class MyView extends View implements OnClickListener
{
public int height;
public int width;
private Bitmap mBitmap;
private Path mPath;
private Paint mBitmapPaint;
public MyView(Context c)
{
super(c);
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
Wid = w;
Ht = h;
mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
@Override
protected void onDraw(final Canvas canvas)
{
canvas.drawColor(0xFFFFFFFF);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
// onclick listner for SAVE button
saveButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//capture the image
try {
saveAsJpg(mBitmap);
startActivity(new Intent(Paint.this, SignatureActivity.class));
finish();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private float mX, mY;
private static final float TOUCH_TOLERANCE = 4;
private void touch_start(float x, float y)
{
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
System.out.println("---- " +mX);
}
private void touch_move(float x, float y)
{
float dx = Math.abs(x - mX);
float dy = Math.abs(y - mY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;
}
}
private void touch_up()
{
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
mPath.reset();
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(x, y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
touch_move(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
touch_up();
invalidate();
break;
}
return true;
}
kann ich der Lage, den grünen Hintergrund zu sehen, während Signatur zu schaffen, aber es ist auf schwarzem Blackground gespeichert. Bitte helfen Sie mir, Vielen Dank im Voraus
post die saveAsJpg() -Methode Code .... – himanshu
@rahul brauchen wir, weil Leinwand Hintergrund setzen in 'onSizeChanged' Methode füllen Bitmap, die Sie zum Speichern verwendet haben, verwenden 'canvas' von' onSizeChanged', und Sie haben Canvas Farbe in 'onDraw' gesetzt, so dass es angezeigt wird, aber es gilt nicht für Bitmap. Überprüfen Sie meinen aktualisierten Code. – Herry