×

androidcanvas android 像素

androidcanvas(android canvas 是像素吗)

admin admin 发表于2023-07-04 09:17:49 浏览54 评论0

抢沙发发表评论

本文目录

android canvas 是像素吗

Canvas : 画布对象,相当于现实生活中画图用的 ‘纸 或 布’。 下面介绍来自于android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,排在第三、四个。Android画图最基本的三个对象(Color,Paint,Canvas)三个类都存放在 android.graphics包下1) Color :颜色对象,相当于现实生活中的 ‘调料’2) Paint : 画笔对象,相当于现实生活中画图用的 ‘笔’————主要的还是对‘画笔’进行设置3) Canvas : 画布对象,相当于现实生活中画图用的 ‘纸 或 布’三者相结合,就能画出基本的图形

android怎么移动canvas

我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API。也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制。这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图。两种的主要是区别就是可以在SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。前面一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;而后一种主要用在游戏,高品质动画方面的画图。Paint 代表了Canvas上的画笔、画刷、颜料等等;Paint类常用方法:setARGB(int a, int r, int g, int b) // 设置 Paint对象颜色,参数一为alpha透明值setAlpha(int a) // 设置alpha不透明度,范围为0~255setAntiAlias(boolean aa) // 是否抗锯齿setColor(int color) // 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义setTextScaleX(float scaleX) // 设置文本缩放倍数,1.0f为原始setTextSize(float textSize) // 设置字体大小setUnderlineText(booleanunderlineText) // 设置下划线// 1、将会以颜色ARBG填充整个控件的Canvas背景//mCanvas.drawARGB(122, 10, 159, 163) ;// 2、将会以颜色ARBG填充整个控件的Canvas背景//mCanvas.drawColor(Color.BLUE) ;// 3、绘制颜色,但是要制定一个mode//mCanvas.drawColor(Color.BLUE, Mode.SCREEN) ;// 4、画背景,跟2等效//mCanvas.drawPaint(mPaint) ;// 5、画一个点//mCanvas.drawPoint(23, 23, mPaint) ;// 6、画很多点这里的float 表示{x0,y0,x1,y1,x2,y2,x3,y3.....}//mCanvas.drawPoints(new float{10,11,10,12,10,13,10,14,10,15,10,16}, mPaint) ;// 7、画线//mCanvas.drawLine(...) ;// 8、画长方形 Rect 和RectF的区别?//精度不一样,Rect是使用int类型作为数值,RectF是使用float类型作为数值//Rect r = new Rect(10,10,50,50) ;//mCanvas.drawRect(r, mPaint) ;//RectF rf = new RectF(10,10,50,50) ;//mCanvas.drawRect(rf, mPaint) ;//mCanvas.drawRect(10, 10, 50, 50, mPaint) ;// 9、画椭圆 初始化RectF的参数是(left,top,right,bottom)//RectF rf = new RectF(100,100 ,200 ,250) ;//mCanvas.drawOval(rf, mPaint) ;// 10、画圆 (圆心x0,圆心y0,半径,paint)//mCanvas.drawCircle(100, 100, 50, mPaint) ;// 11、画圆弧 RectF对象表明内切矩形的(left,top,right,bottom)//RectF rf = new RectF(100 ,100 ,200 ,200) ;// 参数(rf,startAngle ,angle ,sweepAngle ,paint) sweepAngle表明是否显示圆弧三角形 angle画多少度//mCanvas.drawArc(rf, 60, 30, true, mPaint) ;// 12、绘制圆角矩形 RectF是矩形的(left,top,right,bottom)//RectF rf = new RectF(100 ,100 ,200 ,200) ;// 50表明x方向的半径,20表示y方向的半径//mCanvas.drawRoundRect(rf, 50, 20, mPaint) ;// 13、画任意多边形//Path path = new Path() ;//path.moveTo(100, 100) ;//path.lineTo(200, 200) ;//path.lineTo(300, 200) ;//mCanvas.drawPath(path, mPaint) ;// 14、通过Path对象,也可以画其他的图形//Path path = new Path() ;//path.addCircle(100, 100, 20, Path.Direction.CCW) ;//mCanvas.drawPath(path ,mPaint);/*drawBitmapdrawTextdrawPicture*//*Rect r = new Rect(100,100,200,200) ;ByteArrayOutputStream out = new ByteArrayOutputStream();Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) ;InputStream in = new ByteArrayInputStream(out.toByteArray()) ;*//*Picture picture = Picture.createFromStream(mContext.getResources().openRawResource(R.raw.bg)) ;mCanvas.drawPicture(picture) ;*/// 15、画bitmap对象//mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg),100, 100, mPaint) ;// 16、Matrix中包含了对Bitmap的处理操作/*Matrix m = new Matrix() ;m.postScale(2, 2) ;m.postRotate(60) ;mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg), m, mPaint) ;*/// 17、画带Matrix参数的bitmap,经过Matrix对象可以对bitmap做相关的处理,比如旋转,缩放,移动等《关于Matrix的使用另行总结》/*Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;Matrix m = new Matrix() ;m.postScale(2, 2) ;m.postRotate(60) ;m.postTranslate(300, 300) ;mCanvas.drawBitmap(bitmap, m, mPaint) ;*///mCanvas.drawBitmap(....) ; 暂不总结// 18、画文字//mCanvas.drawText(123, 10, 10, mPaint) ;//mCanvas.drawText(....)

android中,如何用canvas绘制透明

第一种思路是通过对Bitmap进行操作,将Bitmap的像素值get到一个int数组里,因为在android里Bitmap通常是ARGB8888格式,所以最高位就是A通道的值,对齐进行改变后再新建一个Bitmap即可。第二种思路是通过设置canvas的paint的透明度,然后通过canvas.drawBitmap()来改变View的透明度。Paint .setAlpha(0);

android canvas怎么画圆弧

12345要实现这个方法,我们要传5个参数进去。第一个参数:RectF ovaloval 参数的作用是:定义的圆弧的形状和大小的范围/*** 这是一个居中的圆*/float x = (getWidth() - getHeight() / 2) / 2;float y = getHeight() / 4;RectF oval = new RectF( x, y,getWidth() - x, getHeight() - y); 1234567812345678第二个参数:float startAngle这个参数的作用是设置圆弧是从哪个角度来顺时针绘画的canvas.drawArc(oval,-90,120,false,mPaint);11canvas.drawArc(oval,90,110,false,mPaint);11//设置为-180的时候也是这样canvas.drawArc(oval,180,140,false,mPaint);1212//设置为360的时候也是这样canvas.drawArc(oval,0,140,false,mPaint);1212第三个参数:float sweepAngle这个参数的作用是设置圆弧扫过的角度我们从上面的代码就可以知道其中的作用了第四个参数:boolean useCenter这个参数的作用是设置我们的圆弧在绘画的时候,是否经过圆形 值得注意的是,这个参数在我们的 mPaint.setStyle(Paint.Style.STROKE); 设置为描边属性的时候,是看不出效果的。/***这里我是偷懒了,建议不要在onDraw()方法里初始化对象*/Paint p = new Paint();//这个是画矩形的画笔,方便大家理解这个圆弧p.setStyle(Paint.Style.STROKE);p.setColor(Color.RED);mPaint.setAntiAlias(true);//取消锯齿mPaint.setStyle(Paint.Style.FILL);//设置画圆弧的画笔的属性为描边(空心),个人喜欢叫它描边,叫空心有点会引起歧义mPaint.setStrokeWidth(mCircleWidth);mPaint.setColor(Color.CYAN);/*** 这是一个居中的圆*/float x = (getWidth() - getHeight() / 2) / 2;float y = getHeight() / 4;RectF oval = new RectF( x, y,getWidth() - x, getHeight() - y);canvas.drawArc(oval,360,140,false,mPaint);//画圆弧,这个时候,绘制没有经过圆心canvas.drawRect(oval, p);//画矩形12345678910111213141516171819202122231234567891011121314151617181920212223//当我们设置为true的时候,绘制的时候就经过圆心了canvas.drawArc(oval,360,140,true,mPaint);1212第五个参数:Paint paint这个参数的作用是设置我们的画笔对象的属性mPaint.setAntiAlias(true);//取消锯齿mPaint.setStyle(Paint.Style.FILL);//设置画圆弧的画笔的属性为描边(空心),个人喜欢叫它描边,叫空心有点会引起歧义mPaint.setStrokeWidth(mCircleWidth);mPaint.setColor(Color.CYAN);12341234这里还是要强调一下,当 p.setStyle(Paint.Style.STROKE)的时候,我们的第四个参数boolean useCenter,是看不到效果的。下面是代码全文public class CustomProgress extends View{private Paint mPaint;/*** 圆的宽度*/private int mCircleWidth = 3;public CustomProgress(Context context) {this(context, null);}public CustomProgress(Context context, AttributeSet attrs) {this(context, attrs, 0);}public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);mPaint = new Paint();}@Overrideprotected void onDraw(Canvas canvas) {mPaint.setAntiAlias(true);//取消锯齿mPaint.setStyle(Paint.Style.FILL);mPaint.setStrokeWidth(mCircleWidth);mPaint.setColor(Color.CYAN);/*** 这是一个居中的圆*/float x = (getWidth() - getHeight() / 2) / 2;float y = getHeight() / 4;RectF oval = new RectF( x, y,getWidth() - x, getHeight() - y); canvas.drawArc(oval,360,140,true,mPaint);}

android Canvas绘制的图形(如:圆),如何实现绘制完后还能编辑

Canvas有很多方法,比如Canvas.translate(float dx, float dy) 平移Canvas.rotate(float degrees, float px, float py) 旋转还有状态的保存与恢复,还可以使用 Matrix 来做自定义变换。

android canvas是按像素画的吗

canvas绘图是在onDraw里触发的。而每次onDraw的时候,其实是重新绘制canvas数据的,也就是如果你什么都不画,canvas上就没有东西了。因此你只要在每次触发onDraw之后,把需要画的内容画出来即可。比如,假设人头的数据是bitmapHead,两种发型分