Я пытаюсь создать приложение на холсте, я рисую растровое изображение на холсте. После рисования я пытаюсь преобразовать в растровое изображение.
может кто-нибудь дать мне предложение.
благодарим вас заранее.
Я пытаюсь создать приложение на холсте, я рисую растровое изображение на холсте. После рисования я пытаюсь преобразовать в растровое изображение.
может кто-нибудь дать мне предложение.
благодарим вас заранее.
Совет зависит от того, что вы пытаетесь сделать.
Если вы обеспокоены тем, что ваши элементы управления занимают много времени, и вы хотите рисовать в растровое изображение, чтобы вы могли разбить растровое изображение, а не перерисовывать с помощью холста, тогда вы не хотите, угадывая платформу - элементы управления автоматически кэшируют их чертеж на временные растровые изображения, и их можно даже извлечь из элемента управления, используя getDrawingCache()
Если вы хотите рисовать с помощью холста в растровое изображение, обычный рецепт:
Bitmap.createBitmap()
Canvas(Bitmap)
constructorИтак, вы создаете новый Bitmap
, например:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )
с width
и height
совпадает с вашим холстом.
Затем используйте canvas.setBitmap(myBitmap)
, но не drawBitmap()
.
После вызова setBitmap
все, что вы рисуете на холсте, на самом деле, опираясь на ваш myBitmap
, идущий на примере кода, который я проиллюстрировал.
Edit
Вы не можете создать растровое изображение напрямую, например:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );
Вместо этого вы должны использовать:
Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );
Другой пример:
public Bitmap getBitmapNews(int item , boolean selected, int numbernews){
Bitmap bitmap;
if(selected)
bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true);
else
bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true);
Canvas canvas = new Canvas(bitmap);
if(numbernews<10){
canvas.drawBitmap(mNotiNews[numbernews],0,0,null);
}else{
canvas.drawBitmap(mNotiNews[0],0,0,null);
}
return bitmap;
}
Ниже приведены шаги для преобразования из холста в растровое изображение и сохранения его в галерее или в определенной папке.
Примечание. Убедитесь, что вы дали разрешение WRITE_EXTERNAL_STORAGE
activity_main.xml
<LinearLayout
android:id="@+id/linearLayout"
android:orientation="horizontal"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<DrawingView
android:id="@+id/drawingView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java
Создать ссылку родительского макета
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
Чтобы сохранить его в галерее
final String imagename = UUID.randomUUID().toString() + ".png";
MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
Преобразование в растровое изображение
linearLayout.setDrawingCacheEnabled(true);
linearLayout.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());