gpt4 book ai didi

Android:检查是否有任何东西被绘制到 Android Canvas

转载 作者:行者123 更新时间:2023-11-30 01:50:11 24 4
gpt4 key购买 nike

我正在用 android 制作一个绘图应用程序。

这里我将 Canvas 上的绘图保存为 png 图像。我正在使用位图数组保存 Canvas 上的绘图。

if(view.getId()==R.id.save_btn){
//save drawing
AlertDialog.Builder saveDialog = new AlertDialog.Builder(this);
saveDialog.setTitle("Save drawing");
saveDialog.setMessage("Save drawing to device Gallery?");
saveDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
int k=0;
//save drawing

while(bits[k]!=null) {
Bitmap m = null;

m = bits[k];
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path + File.separator + "Pictures" + File.separator + k + "_image.png");
FileOutputStream ostream;
try {
file.createNewFile();
ostream = new FileOutputStream(file);
m.compress(Bitmap.CompressFormat.PNG, 100, ostream);
ostream.flush();
ostream.close();
Toast.makeText(getApplicationContext(), "image saved :" + path, Toast.LENGTH_SHORT).show();


} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show();
}
k=k+1;
}

i=0;
bits=null;
}
}
}

这里我将 View 的drawingCache 保存到位图数组中。在这里,即使我的 Canvas 是空的,仍然会保存一张空白图像。

我不想要那个。我只想在 Canvas 上有任何绘图时保存。
那么有什么办法可以做到这一点??

或者有什么方法可以检查 Canvas 上是否有绘图??

最佳答案

不要使用绘图缓存。在您的 View 中有一个方法,如 getBitmap() 并使用该方法获取位图。您正在使用 Canvas 的默认位图。这很难操作,而是创建您自己的位图,然后在该位图上绘制。这是一种更好的方法,不仅满足您的要求,而且也适用于操作位图。

更新:您可以创建自己的位图并按如下方式在其上绘制

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);

现在你可以使用这个 Canvas 对象来绘制你想要的东西了。在我的应用程序中,我专门安排了整个类(class)来处理绘图。我使用 CustomView 的 onDraw() 来查看此位图并进行缩放。原始绘图发生在我的专用类里面。我已经覆盖了 onTouchEvent() 并使用它来处理各种绘图手势并使用这些输入在我的自定义位图上绘图。

但是如果你打算使用 drawingCache,那么检查这个:How to check if a Bitmap is empty (blank) on Android

关于Android:检查是否有任何东西被绘制到 Android Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33172732/

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