الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هناك طريقة لتصميم شاشة رسم حر في الاندرويد ؟

بدأه محمد فضل في 5 فبراير 2012 · 11 رد · 909 مشاهدة · في Android
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا استخدمت canvas لاتاحة الرسم الحر للمستخدم ولكن واجهتني مشكلة وهي ان النقاط التي يرسمها المستخدم تبدو و كانه تتحرك فهل يوجد كود للرسم الحر او يمكن ان تعالج هذه المشكلة ؟

رب ارحمهما كما ربياني صغيرا

#3

جزاك الله خيرا .S.T.A.L.K.E.R لكنني أريد أن استفسر عن بعض الأشياء إن كنت تملتك وقتا لذلك

رب ارحمهما كما ربياني صغيرا

#4

اذا كان استفسارك تابع لنفس السؤال، لا مانع من كتابته هنا

اذا كان عن سؤال اخر، يفضل طرحه بموضوع جديد

تفضل اخي الكريم

#5

أريد أن أعرف كيف يمكنني أن أحفظ الشكل المرسوم بعد الانتهاء من رسمه ؟

جزاك الله خيرا على سعة صدرك ..

رب ارحمهما كما ربياني صغيرا

#6
		Bitmap bitmap = Bitmap.createBitmap(240, 320, Bitmap.Config.ARGB_4444);
		Canvas canvas = new Canvas(bitmap);
		/**
		 * Draw on your Canvas
		 */

		FileOutputStream fileOutputStream=new FileOutputStream(new File(path));
		bitmap.compress(CompressFormat.JPEG, 90, fileOutputStream);
#7

شكرا جزيلا اخي العزيز ولكن هذا الطريقة لم تفلح .. رغم أن التطبيق يعمل بصورة مثالية إلا أنني حين بحث عن الملف المخرج لم أجد له أثر ..

رب ارحمهما كما ربياني صغيرا

#8

اتضح أن المشكلة أن الملف لم يتم إنشاءه حقيقة .. فكيف أضمن أن الملف ينشأ ؟

رب ارحمهما كما ربياني صغيرا

#9
	Bitmap bitmap = Bitmap.createBitmap(240, 320, Bitmap.Config.ARGB_4444);
		Canvas canvas = new Canvas(bitmap);
		/**
		 * Draw on your Canvas
		 */
		File file = new File(path);
		if (!file.exists()) {
			file.createNewFile();
		}

		FileOutputStream fileOutputStream = new FileOutputStream(file);
		bitmap.compress(CompressFormat.JPEG, 90, fileOutputStream);
#10

قمت بذلك أيضا لكنه لم يجدي نفعا .. جزاك الله خيرا أخي .. سوف أرفق لك الكود بأكمله وأرجو أن تجد وقتا لتطلع عليه و توفق في إيجاد الخطأ

package com.harktat.mohamed;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Cap;
import android.graphics.Paint.Join;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Toast;

public class NewTestActivity extends Activity implements OnTouchListener{

	float sX =0 ;
	float sY = 0;
	float fX =0;
	float fY =0;
	boolean isBtmCreated = false ;
	OutputStream stream;
	Path myPath = null ;
	Canvas myCanvas ;
	Paint myPaint =new Paint();
	ourView object ;
	Bitmap btm ;
	String path ="mohd";
	File file ;
	boolean isFileCreated = false ;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        object = new ourView(this);
        object.setOnTouchListener(this);
        myPath = new Path();
        object.setDrawingCacheEnabled(true);
        setContentView(object);


    }

    public class ourView extends View {


		public ourView(Context context) {
			super(context);
			// TODO Auto-generated constructor stub
		 btm = Bitmap.createBitmap(250, 250, Bitmap.Config.ARGB_8888);

			myPaint.setColor(Color.RED);
			myPaint.setStyle(Style.STROKE);
			myPaint.setStrokeJoin(Join.MITER);
			myPaint.setStrokeCap(Cap.ROUND);
			myPaint.setStrokeWidth(5);
		}

		@Override
		protected void onDraw(Canvas canvas) {
			// TODO Auto-generated method stub
			super.onDraw(canvas);
			if(isBtmCreated == false){
				canvas = new Canvas(btm);
				isBtmCreated = true;
			}else {

			canvas.drawPath(myPath, myPaint);
		}
		}


    }

    public void saveImage(){



    	try {

    		Bitmap bitmap = object.getDrawingCache();
			path = Environment.getDataDirectory().getAbsolutePath();

			file = new File( path+ "/image.png");
			if(!file.exists()){
				file.createNewFile();
			}
			FileOutputStream fos ;


			fos = new FileOutputStream(file);
			bitmap.compress(CompressFormat.PNG, 100, fos);
			fos.flush();
			fos.close();
			isFileCreated = file.exists() ;

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e){
			e.printStackTrace();
		}

    }

	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub

		switch(event.getAction()){
		case MotionEvent.ACTION_DOWN :
			sX = event.getX();
			sY= event.getY();
			myPath.moveTo(sX, sY);
			object.invalidate();

			break ;
		case MotionEvent.ACTION_MOVE :
			fX = event.getX();
			fY= event.getY();
			myPath.quadTo(sX, sY, fX, fY);
			sX=fX ;
			sY=fY;
			object.invalidate();
			break ;
		case MotionEvent.ACTION_UP :
			saveImage();
			this.setTitle(String.valueOf(isFileCreated));
			break ;
		}
		return true;
	}
}

رب ارحمهما كما ربياني صغيرا

#11

هل اضفت ال Permission الخاصة بالسماح لك للكتابة على SD Card ?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
#12

لقد كان هكذا

<permission 
        android:name= "android.permission.WRITE_EXTERNAL_STORAGE"
        ></permission>

لكن عدلته بما كتبت أنت و اصبحت قادرا على الكتابة إلى الملف .. جزاك الله خيرا عزيزي ولا حرمت الأجر .. عاجز عن الشكر

رب ارحمهما كما ربياني صغيرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…