gpt4 book ai didi

Android setBitmap 到 Canvas

转载 作者:太空狗 更新时间:2023-10-29 16:17:11 24 4
gpt4 key购买 nike

我想将 Canvas 转换为图像并将其保存在设备上。但是,当我将位图设置为 Canvas 时,出现错误 java.lang.UnsupportedOperationException。我的完整代码:

public class SingleTouchEventView extends View {
private Paint paint = new Paint();
private Path path = new Path();


public SingleTouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);

paint.setAntiAlias(true);
paint.setStrokeWidth(6f);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.BEVEL);
}

@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, paint);
canvas.drawCircle(50, 50, 3, paint);
Bitmap bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
try {

File file = new File(Environment.getExternalStorageDirectory() + "/image.jpg");
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(file));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

也许有人可以帮我解决这个问题?

最佳答案

这不是绘制位图的方式。您不使用绘制到屏幕的 Canvas 。您创建第二个 Canvas ,将要绘制的位图作为构造函数中的参数传递。然后对该 Canvas 的任何绘制命令都将绘制位图。然后将该位图绘制到屏幕上。像这样:

Canvas myCanvas = new Canvas(myBitmap);
myCanvas.drawLine();
myCanvas.drawCircle();
//Insert all the rest of the drawing commands here
screenCanvas.drawBitmap(myBitmap, 0, 0);

我也不会在 onDraw 中将其写入文件系统 - 如果您这样做,我预计绘图性能会受到严重影响。单独的函数调用可以做到这一点。如果您将 myBitmap 保存在一个变量中,您可以随时压缩它以将最后一次绘图写入磁盘。

关于Android setBitmap 到 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24136265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com