小刚张嘎
2018-01-24 09:18
采纳率: 85.7%
浏览 1.1k

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保存成图片就行了。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • AWeiLoveAndroid 2018-01-26 10:42

    你可以自定义一个View 先去绘制一些东西 然后在你的图片上方引用这个自定义View 直接叠加就可以了

    评论
    解决 无用
    打赏 举报
  • 小刚张嘎 2018-01-30 09:36

    这个可不可以,打印一部分然后缓存,再打一部分,然后拼接?

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题