You are doing something really strange!

First you setup a bitmao as your canvas
               bitmap = Bitmap.createBitmap(100, 100, true);
                Canvas canvas = new Canvas(bitmap);

But later, you use  your canvas ( which uses your bitmap as it's
buffer) and you draw on it, using itself, i.e. you feedback the same
bitmap
                canvas.drawBitmap(bitmap, 10, 10, null);

This is shure to fail, since the copy behaviour is not defined how it
should behave in case you  are copying it to itself.

Use different bitmaps, one for canvas, and another for whatever you
are drawing.

TIP: if you set thePixels(...) of your bitmap (buffer) you don't need
to draw those same pixels after, since they are already there !


On 8 abr, 04:20, Gibson <[EMAIL PROTECTED]> wrote:
> hi all,
>
> I wrote following code.
>
> class MyView extends View {
>         Bitmap bitmap;
>
>         public MyView(Context context) {
>                 super(context);
>                 Drawable drawable =
> context.getResources().getDrawable(R.drawable.icon);
>                 bitmap = Bitmap.createBitmap(100, 100, true);
>                 Canvas canvas = new Canvas(bitmap);
>                 drawable.setBounds(0, 0, 100, 100);
>                 drawable.draw(canvas);
>         }
>
>         @Override
>         protected void onDraw(Canvas canvas) {
>                 Paint paint = new Paint();
>                 paint.setARGB(255, 255, 255, 255);
>                 canvas.drawRect(0, 0, screenWidth, screenHeight, paint);
>                 canvas.drawBitmap(bitmap, 10, 10, null);
>                 int[] imagedata = new int[100 * 100];
>                 bitmap.getPixels(imagedata, 0, 100, 0, 0, 100, 100);
>                 bitmap.setPixels(imagedata, 0, 100, 0, 0, 100, 100);
>                 invalidate();
>
>                 try {
>                         Thread.sleep(100);
>                 } catch (InterruptedException e) {
>                 }
>         }
>
>         int screenWidth, screenHeight;
>
>         @Override
>         protected void onSizeChanged(int i, int j, int k, int l) {
>                 screenWidth = i;
>                 screenHeight = j;
>                 super.onSizeChanged(i, j, k, l);
>         }
>
> }
>
> These code just retrieve the pixel data and then put them back. But
> why i got different result on the screen. It seems like the retrieve
> method change some pixel? Can anybody help me with this please?
> Thanks.
>
> BR
> Gibson
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to