最近写电子书程序,设计到对图像的处理,主要是对Bitmap的处理,所以有一点小小的心得,拿出来跟大家分享一下。canvas。drawbitmap要把一个Bitmap画到View上,必须用到的类有android。graphics。Canvas,和android。
graphics。Bitmap。方法很简单,在View里面,重载onDraw(Canvascanvas)方法,然后用canvas。drawBitmap()方法,将其画在屏幕上。canvas。drawbitmappublicclassMyViewextendsView{privateBitmapmBitmap;publicMyView(Contextcontext){super(context);initialize();}privatevoidinitialize(){Bitmapbmp=((BitmapDrawable)getResources()。
getDrawable(R。drawable。show))。getBitmap();mBitmap=bmp;}@OverrideprotectedvoidonDraw(Canvascanvas){//super。onDraw(canvas);//当然,如果界面上还有其他元素需要绘制,只需要将这句话写上就行了。
canvas。drawBitmap(mBitmap,0,0,null);}}结果:原图:虽然这仅仅只是第一步,但是很鼓舞人心呢,呵呵。上面是直接将原图画在屏幕上,没有任何处理,因为图片比屏幕大,所以超出的部分看不到。我们试着将图片拉伸以填满整个屏幕。
publicclassMyViewextendsView{privateBitmapmBitmap;privateMatrixmMatrix=newMatrix();privatestaticintmScreenWidth;privatestaticintmScreenHeight;publicMyView(Contextcontext){super(context);initialize();}privatevoidinitialize(){DisplayMetricsdm=getResources()。
getDisplayMetrics();mScreenWidth=dm。widthPixels;mScreenHeight=dm。heightPixels;Bitmapbmp=((BitmapDrawable)getResources()。
getDrawable(R。drawable。show))。getBitmap();mBitmap=Bitmap。createScaledBitmap(bmp,mScreenWidth,mScreenHeight,true);}@OverrideprotectedvoidonDraw(Canvascanvas){//super。
onDraw(canvas);//当然,如果界面上还有其他元素需要绘制,只需要将这句话写上就行了。canvas。drawBitmap(mBitmap,0,0,null);}}显示结果:下面一篇将介绍对Bitmap的一些操作。
在Android开发中,`Random`类用于生成伪随机数,而`Math.cos`是Java标准库中的一个静态方法,用于计算给定角度的余弦值。这两个功能通常用于不同的场景,但可以结合使用来实现一些有趣的动画效果或图形生成。
关于`Java Canvas.drawBitmap`,`drawBitmap`是`Canvas`类中的一个方法,用于在画布上绘制位图。位图是一种常见的图像格式,可以用来显示图片或作为纹理应用于图形中。
如果你想在Android中使用`Random`和`Math.cos`来操作位图,例如随机生成一些具有波浪效果的纹理,你可以先生成一个空白的位图,然后通过修改其像素来实现。以下是一个简单的示例代码片段:
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(0, 0, width, height, paint);
Random random = new Random();
for (int x = 0; x < width; x++) for (int y = 0; y < height; y++) // 使用Math.cos来创建波浪效果
int waveHeight = (int) (Math.cos(x / 50.0) * 20);
int color = (y < waveHeight + height / 2) ? Color.BLUE : Color.WHITE;
bitmap.setPixel(x, y, color);
}
}
canvas.drawBitmap(bitmap, 0, 0, null);
这段代码创建了一个空白的位图,并在其上绘制了一个简单的波浪效果。你可以根据需要调整`Math.cos`中的参数和颜色,以生成不同的效果。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号