سؤال

أحاول تطوير تطبيق على قماش ، أنا أرسم صورة نقطية على القماش. بعد الرسم ، أحاول التحويل إلى صورة نقطية.

هل يمكن لأي شخص أن يعطيني اقتراحًا.

شكرا لكم مقدما.

هل كانت مفيدة؟

المحلول

تعتمد النصيحة على ما تحاول القيام به.

إذا كنت تشعر بالقلق من أن أدوات التحكم الخاصة بك تستغرق وقتًا طويلاً للرسم ، وكنت ترغب في السحب إلى صورة نقطية حتى تتمكن لا تريد أن تكون مزدوجة تخمين النظام الأساسي - يتحكم تلقائيًا في رسمها إلى خرائط نقطية مؤقتة ، ويمكن جلبها حتى من عنصر التحكم باستخدام getDrawingCache()

إذا كنت ترغب في الرسم باستخدام قماش إلى صورة نقطية ، فإن الوصفة المعتادة هي:

  1. قم بإنشاء صورة نقطية من الحجم الصحيح باستخدام Bitmap.createBitmap()
  2. قم بإنشاء مثيل قماش يشير إلى أن هذه الصورة النقطية باستخدامها Canvas(Bitmap) البناء
  3. ارسم إلى القماش
  4. استخدم صورة نقطية

نصائح أخرى

لذلك يمكنك إنشاء جديد Bitmap, ، علي سبيل المثال:

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )

مع width و height كونها نفس القماش الخاص بك.

بعد ذلك ، استخدم canvas.setBitmap(myBitmap), ، لكن لا drawBitmap().

بعد الاتصال setBitmap, ، كل ما ترسمه على قماش myBitmap الذهاب حسب رمز المثال الذي أوضحته.

تعديل:

لا يمكنك إنشاء صورة نقطية مباشرة مثل:

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

  1. إنشاء مرجع لتخطيط الوالدين

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
    
  2. لتخزينه في المعرض

    final String imagename = UUID.randomUUID().toString() + ".png";
    MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
    
  3. للتحويل إلى صورة نقطية

    linearLayout.setDrawingCacheEnabled(true);
    linearLayout.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());
    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top