如何在画布上绘制并转换为位图?

Posted

技术标签:

【中文标题】如何在画布上绘制并转换为位图?【英文标题】:How to draw on canvas and convert to bitmap? 【发布时间】:2015-08-24 08:11:17 【问题描述】:

我正在尝试在画布上绘制一些线条和形状,然后将其转换为 ImageView 上的位图。我正在使用扩展“视图”的自定义类,并在“OnDraw 方法上画线。这是我的代码(这个类只画简单的线):

public class finalDraw extends View 
        public finalDraw(Context context) 
            super(context);
        

        @Override
        protected void onDraw(Canvas canvas) 
            super.onDraw(canvas);
            Paint paint = new Paint();
            paint.setColor(Color.BLUE);
            for (int i = 0; i <100; i++) 
                 canvas.drawLine(xStart * i + 50 , yStart , stopX + 30 , stopY,paint); 
            

            invalidate();
        
    

如何获取绘图结果并在 ImageView 上显示? 谢谢!

【问题讨论】:

【参考方案1】:

发现这篇文章可能会有所帮助:http://www.informit.com/articles/article.aspx?p=2143148&seqNum=2

draw.setOnClickListener(new OnClickListener() 
    public void onClick(View v) 
        Bitmap imageBitmap = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(imageBitmap);
        float scale = getResources().getDisplayMetrics().density;
        Paint p = new Paint();
        p.setColor(Color.BLUE);
        p.setTextSize(24*scale);
        canvas.drawText("Hello", imageView.getWidth()/2, imageView.getHeight()/2, p);
        imageView.setImageBitmap(imageBitmap);
    
);

【讨论】:

【参考方案2】:

通过Canvas(Bitmap bitmap) 创建一个带有位图的画布。对该画布的所有绘制都将在该位图中。

【讨论】:

以上是关于如何在画布上绘制并转换为位图?的主要内容,如果未能解决你的问题,请参考以下文章

如何让用户在Android中随意绘制长画布?

Android 清除画布上绘制的位图

在 Android 中将位图转换为灰度

在将python turtle canvas转换为位图时如何保持画布大小

如何将 html 画布转换为图像,然后将该画布绘制到画布上

在画布上绘制位图已缩放