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

كيف احفظ صورة على شكل jpeg

بدأه Hisham_IT في 1 يوليو 2011 · 12 رد · 809 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

اثناء عملي لبرنامج رسام...باستخدام tabControl ....كخلفية للرسم...

اريد ان احفظ الصورة الناتجة عن الرسم كصورة jpeg و اخزنها في كمبيوتري....كيف ذلك؟؟

شكرا لكم....

Currently working on ASP.net ..... come Back Soon

#2

عليكم السلام ورحمة الله وبركاته

SaveFileDialog SFD = new SaveFileDialog();
            SFD.Filter = "Image Files(*.JPG)|*.JPG";
            if (SFD.ShowDialog() == DialogResult.OK && SFD.FileName != string.Empty)
            {
                int width = tabPage1.Size.Width;
                int height = tabPage1.Size.Height;
                Bitmap bm = new Bitmap(width, height);
                tabPage1.DrawToBitmap(bm, new Rectangle(0, 0, width, height));
                bm.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
            }

تم تعديل هذه المشاركة بواسطة Rose Muhammed في 1 يوليو 2011 في 21:55

((إِنَّ اللَّهَ وَمَلائِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا))

#3

شكرا لك اخي...

الكود تقريبا قد عمل...و لكن المشكلة انه يأخذ صورة tabPage1 فقط بدون أن يأخذ الخطوط و الالوان التي يحويها.....فقد استخدمت tabPage1 لكي ارسم عليها....و لكن يقوم بحفظ الصورة بيضاء بدون اية خطوط مرسومة..

فما السبب؟؟؟؟

Currently working on ASP.net ..... come Back Soon

#4

السلام عليكم ورحمه الله وبركاته

اخي الكود سليم, تأكد انك قمت بالرسم في الحدث Paint لل tabPage1؟!!

1

.:: Wish to become better and better ::.

#5
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي الكود سليم, تأكد انك قمت بالرسم في الحدث Paint لل tabPage1؟!!

لا قمت بالرسم بالحدث tabPage1_MouseMove>>>>>.....كيف يمكنني الرسم بالحدث paint

المشكلة انه تلزمني احداثيات كل نقطة..لذلك استخدمت هذا الحدث ...

Currently working on ASP.net ..... come Back Soon

#6

السلام عليكم ورحمه الله وبركاته

اخي قم بحفظ احداثيات الفأرة في متغيران واستخدم الحدث paint ومن ثم استخدم الكود السابق ليتم حفظ الصوره مع الوان والخطوط ... الخ

1

.:: Wish to become better and better ::.

#7

يا جماعة .الكود مش عم بزبط ..ليش؟

الكود الذي وضعته من قبل...كان كل شي تمام...بس الخطوط ما عم تطلع مع الصورة المحفوظة...علما انني كتبت الكود في tabPage1_mousemove

و لكن tabPage_paint event لم استخدمه ابدا....كما يلي

  private void tabPage1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                x = e.X;
                y = e.Y;
                p1.X = x;
                p1.Y = y;
                p2.X = x + 1;
                p2.Y = y + 1;

                tabPage1.CreateGraphics().DrawLine(myPen, p1, p2);


            }

ثم كما قال الاخ vb helper قم بتعديل الكود لاضعه في Paint event ...و لكن لم استطع جعل الرسم مستمر عند ضغط الماوس...اي يمكن فقط رسم خط مثلا عند بداية التشغيل...و لكن اثناء التشغيل فلا يمكن

الكود كما يلي:

if (e.Button == MouseButtons.Left)
            {
                x = e.X;
                y = e.Y;
                p1.X = x;
                p1.Y = y;
                p2.X = x + 1;
                p2.Y = y + 1;
            }

private void tabPage1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawLine(myPen, p1, p2);

        }

حيث p1,p2,x,y متحولات معرفة على الكلاس....و هي ستاتيكية...

ارجو الرد....و تعديل الكود....او كتابة الكود الازم....حتى استطيع حفظ الصورة الناتجة....بكامل تفاصيلها....

اذا اردتم سأرفع مرفق......و لكم جزيل الشكر

تم تعديل هذه المشاركة بواسطة Hisham_IT في 5 يوليو 2011 في 00:02

Currently working on ASP.net ..... come Back Soon

#8

ما بدي اصير نقاق.....بس والله ضروري

ارجو الاطلاع على الموضوع....

Currently working on ASP.net ..... come Back Soon

#9

السلام عليكم ورحمه الله وبركاته

اخي ممكن ترفق مشروعك ليتم النظر في المشكلة

.:: Wish to become better and better ::.

#10

السلام عليكم...

اخي الكود تقريبا زبط معي عن طريق استخدام خلفية لل tabPage1 ..و لكن رأيت انه في كل مرة يتحرك الماوس يقوم بتعديل الخلفية...و هذا كان امرا مرهقا للمعالج...و بطيء

لذلك ما اريده مثلا هم جعل كل عنصر ارسمه ك object في الذاكرة عن طريق استخدام buffer >>>هل يمكن ذلك

هذا هو المرفق....لا حظ انه لا يتم حفظ الا الاشكال التي سبق لها ان عمل لها paint ...اما الاشكال التي يتم رسمها فلا يحفظها

Test on jpeg.rar

Currently working on ASP.net ..... come Back Soon

#11

السلام عليكم ورحمة الله وبركاته

اخي انصحك بإضافة Panel or PictureBox داخل التاب وقم بضبط الخاصية

Dock=Fill ثم قم بالرسم عليها.

شوف هذا الرابط فيه درس عن الرسم حلو وبسيط وهذا تحميل الكودحقه .

على فكرة هو استخدم الحدث MouseUp في تثبيت الرسم في خلفية البنل , في نفس الوقت في الحدث MouseMove يعمل تحديث لخلفية البنل, يعني ما حل المشكلة اللي تتكلم عنها.

اقتباس

و لكن رأيت انه في كل مرة يتحرك الماوس يقوم بتعديل الخلفية...و هذا كان امرا مرهقا للمعالج...و بطيء

لذلك ما اريده مثلا هم جعل كل عنصر ارسمه ك object في الذاكرة عن طريق استخدام buffer

لكن بالنسبة لعملية الحفظ بهذه الطريقة ان شاء الله ما راح تواجه مشاكل.

((إِنَّ اللَّهَ وَمَلائِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا))

#12

شكرا لك Rose......

بالنسبة للكود ما بعرف لش ما عم يشتغل...>>و المدونة رائعة على فكرة

خطرت لي فكرة فيما بعد ....بأن احفظ الخط المرسوم او النقطة على شكل مجموعة من النقاط.....Point Collection....و بذلك اظن بيمشي الحال...بس لم اجرب بعد

Currently working on ASP.net ..... come Back Soon

#13

السلام عليكم ورحمة الله وبركاته

اقتباس

بالنسبة للكود ما بعرف لش ما عم يشتغل..

اذا كنت تقصد كود حفظ الصورة فاستبدله بالكود اللي كتبته سابقا^

اما باقي الكود سليم

عموماً اتمنى لك التوفيق.

((إِنَّ اللَّهَ وَمَلائِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا))

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

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

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

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

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