小刚张嘎 2018-01-24 09:18 采纳率: 100%
浏览 1144
已采纳

android:用Bitmap+Canvas画出来的东西,有的能打印有的不能打印

下面这段代码目的是想把图片、文字等打印在一张创建的背景图上。怎么有的能打印出来有的不能?请问要怎么做才能把要打印的都打印上去?
public void DrawImage() {
/*建立画布,画笔,位图初始化*/
bitmap = Bitmap.createBitmap(xp_width, xp_height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
paint = new Paint();
paint.setTextSize(5);

        /*花两边的圆孔 能打印*/
        canvas.drawColor(Color.rgb(223, 233, 235));
        for (int y = 5; y < xp_height - 5; y++) {
            canvas.drawOval(10, y, 24, y + 14, paint);
            canvas.drawOval(495, y, 509, y + 14, paint);
            y = y + 27;
        }

        /*把头部信息打印在背景图上   能打印*/
        bitmap_top = BitmapFactory.decodeResource(getResources(), R.drawable.lishua_top);
        // 指定图片绘制区域
        Rect src_top = new Rect(0, 0, bitmap_top.getWidth(), bitmap_top.getHeight());
        // 指定图片在屏幕上显示的区域,四个点的坐标
        Rect dst_top = new Rect(45, 15, 475, 55);
        canvas.drawBitmap(bitmap_top, src_top, dst_top, paint);
        Log.d("xg", "this is do top");

         /*把印章信息打印在背景图上  不能打印*/
        bitmap_mark = BitmapFactory.decodeResource(getResources(), R.drawable.lakala_top);
        // 指定图片绘制区域
        Rect src_mark = new Rect(0, 0, bitmap_mark.getWidth(), bitmap_mark.getHeight());
        // 指定图片在屏幕上显示的区域,四个点的坐标
        Rect dst_mark = new Rect(280, 595, 485, 570);
        //canvas.rotate();
        canvas.drawBitmap(bitmap_mark, src_mark, dst_mark, paint);

        /* 能打印*/
        canvas.drawLine(100,100,200,200,paint);

        /* 不能打印*/
        canvas.drawPoint(100,100,paint);

        imageView.setImageBitmap(bitmap);
  • 写回答

3条回答 默认 最新

  • 白萝卜。 2018-01-24 10:15
    关注

    CreateBitmap 本身是很消耗资源的,如果加上图片的话,小的还可以吧,大的估计就不行了,正确的做法是 创建一个自定义View,全部画上去,然后把View转化成bitmap,bitmap保存成图片就行了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集