Android群英传--绘图机制和处理技巧(二)

在View绘图中常用的方法:

在View中绘制时使用的是Canvas(画布),Paint(画笔)。我们可以使用这两个类所提供的方法极大的减少我们绘图时的工作量。

Canvas:


   canvas.save();//保存当前画布
   canvas.restore();//恢复当前画布
   canvas.saveLayerAlpha()//保存图层
   canvas.getSaveCount()//获取保存的图层数
   canvas.translate(float x,float y);//x--在x轴上移动的距离,y--在y轴上移动的距离
   canvas.rotate(float angle);//angle 旋转的角度
   canvas.rotate(float angle,float px, float py;);//绕(px,py)点旋转angle角度

Paint:

    paint.setStyle();//设置画笔的风格 Paint.Style.STROKE---空心  Paint.Style.FILL--实心
    paint.setStrokeWidth(); //设置画笔的边框宽度
    paint.setTypeface()//设置画笔字体 
    paint.setAntiAlias(); //设置画笔是否抗锯齿

Layer图层的演示:

public class TestCanvas extends View {
    Paint paint;
    public TestCanvas(Context context) {
        super(context);
        paint = new Paint();
    }

    public TestCanvas(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        paint.setColor(Color.BLUE);
        canvas.drawRect(0, 0,300,300, paint);

        //将图层入栈,之后的所有操作都发生在该图层上
        canvas.saveLayerAlpha(0, 0, 800, 800, 127, Canvas.CLIP_TO_LAYER_SAVE_FLAG);//left, top, right, bottom, alpha,saveFlags
        paint.setColor(Color.RED);
        canvas.drawRect(150, 150, 500,500,paint);
        //将图层进行合并,将图形绘制到上层canvas
        canvas.restore();

    }
}
//效果为半透明,alpha范围在0~255之间,0为全透明,255为完全不透明

半透明效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,我们可以使用 Bitmap 类来读写位图。具体的操作步骤如下: 1. 从资源中读取位图 我们可以通过以下代码从资源中读取位图: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image); ``` 2. 从文件中读取位图 我们可以通过以下代码从文件中读取位图: ```java Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/my_image.jpg"); ``` 3. 从网络中读取位图 我们可以使用 Android 提供的网络请求库(如 Volley、OkHttp 等)从网络中读取位图: ```java ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { // 处理位图 } }, 0, 0, null, null); ``` 4. 将位图保存到文件 我们可以使用以下代码将位图保存到文件: ```java File file = new File("/sdcard/my_image.jpg"); OutputStream os = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); os.flush(); os.close(); ``` 5. 从矢量绘图获取位图 我们可以使用以下代码从矢量绘图获取位图: ```java VectorDrawable vectorDrawable = (VectorDrawable) getResources().getDrawable(R.drawable.my_vector); Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); vectorDrawable.draw(canvas); ``` 以上就是关于 Android 中读写位图的操作方法,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值