تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] سؤال هام : حذف صورة معروضة فى مربع صور ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
#1
السلام عليكم 
سؤال هام : حذف صورة معروضة فى مربع صور ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
و طبعا من تعرض لهذا الموضوع سيجد الرسالة الشهيرة : 

 process cannot access the file 'C:\Users\Desktop\system\bin\Debug\MyPictures\imag5.png' because it is being used by another process.


الحلللللللللللللللللللللل ؟
ايه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
 (( و بالمناسبة كود Dispose للصورة أو مربع الصور و الكلام ده مش له أى نتيجة ))
الرد
تم الشكر بواسطة:
#2
و عليكم السلام و رحمة الله و بركاته

كود :
Imports System.IO
Public Class Form1
   Private Sub Form1_Load()
       Dim m_CurrImage As Bitmap
       Dim m_CurrImageInf As FileInfo
       Dim m_CurrImageStrm As FileStream
       m_CurrImageInf = New FileInfo("1.png")
       m_CurrImageStrm = m_CurrImageInf.OpenRead
       m_CurrImage = New Bitmap(m_CurrImageStrm)
       PictureBox1.Image = m_CurrImage
       m_CurrImageStrm.Close()
       m_CurrImageInf.Delete()
   End Sub
End Class
أخواني الكرام
كنت أرغب بالتزام الصمت لكن الموضوع أبسط من أن يتحمل كل هذا النقاش
كان يجب أن يكون السؤال عن استخدام صورة وقت التصميم في أداة PictureBox ثم حذفها بالكود
فيكون الجواب طبعا لا يمكن حذف ملف مقفول (مستخدم من برنامج آخر)
البرنامج الذي يستخدم الصورة هو بيئة التصميم في فيجوال بيسك و لن يتم حذفه الا بعد اغلاق فيجوال بيسك
عندما تعمل بناء للمشروع كملف تنفيذي EXE سيعمل الكود الذي لم يعمل عند تشغيله من بيئة التصميم
لأن ملف الصورة سيكون مضمن ضمن الملف التنفيذي و الدليل هو عرض الصورة حتى بعد حذفها
أرجو ان تكون الصورة قد توضحت
الرد
تم الشكر بواسطة:
#3
(04-07-20, 01:08 AM)Mohamad Anan كتب : و عليكم السلام و رحمة الله و بركاته

كود :
Imports System.IO
Public Class Form1
   Private Sub Form1_Load()
       Dim m_CurrImage As Bitmap
       Dim m_CurrImageInf As FileInfo
       Dim m_CurrImageStrm As FileStream
       m_CurrImageInf = New FileInfo("1.png")
       m_CurrImageStrm = m_CurrImageInf.OpenRead
       m_CurrImage = New Bitmap(m_CurrImageStrm)
       PictureBox1.Image = m_CurrImage
       m_CurrImageStrm.Close()
       m_CurrImageInf.Delete()
   End Sub
End Class

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

 للأسف النتيجة المتوقعة . هذه المشكلة قتلت بحثا و تحليلا فى الكثير من المواقع .. و للأسف النتيجة دائما فشل متوقع 
الرد
تم الشكر بواسطة:
#4
مرحبا أخي الكريم

المثال في المرفق


.rar   Delete Used Image.rar (الحجم : 17.23 ك ب / التحميلات : 9)
الرد
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو , WaeLx
#5
السلام عليكم ورحمة الله وبركاته
اخي الكريم حتى نستطيع حذف الصورة من الاصل يجب تغيير طريقة ملء مربع الصورة  باتباع المراحل التالية :
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim ofd As New OpenFileDialog()
       ofd.Filter = "All Image(jpg,Png)|*.jpg;*.png|AllPicture|*.*"
       If ofd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
           Dim Photo As String = ofd.FileName

           '  فتح الصورة المجلوبة باسمها ومسارها ثم وضعها في ملف ستريم ثم في بتماب ثم نضعها في مربع الصورة
           Dim FS As FileStream = System.IO.File.Open(Photo, FileMode.Open)
           Dim bmp As New Bitmap(FS)
          FS.Close()
           PictureBox1.Image = bmp
           ' بهذه الطريقة فقط يمكن حذف الصورة من الاصل
       End If
   End Sub
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: سامي محمد , WaeLx
#6
(04-07-20, 01:36 AM)ابراهيم ايبو كتب :
السلام عليكم ورحمة الله وبركاته
اخي الكريم حتى نستطيع حذف الصورة من الاصل يجب تغيير طريقة ملء مربع الصورة  باتباع المراحل التالية :
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim ofd As New OpenFileDialog()
       ofd.Filter = "All Image(jpg,Png)|*.jpg;*.png|AllPicture|*.*"
       If ofd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
           Dim Photo As String = ofd.FileName

           '  فتح الصورة المجلوبة باسمها ومسارها ثم وضعها في ملف ستريم ثم في بتماب ثم نضعها في مربع الصورة
           Dim FS As FileStream = System.IO.File.Open(Photo, FileMode.Open)
           Dim bmp As New Bitmap(FS)
          FS.Close()
           PictureBox1.Image = bmp
           ' بهذه الطريقة فقط يمكن حذف الصورة من الاصل
       End If
   End


أستاذنا الفاضل ابراهيم 
عليكم السلام و رحمة الله و بركاته
أشكرك على وقتك و جهدك
لكن للأسف :
مفيش فايدة 

الرد
تم الشكر بواسطة:
#7
غير طريقة تحميل الصورة .... استخدم هذه

كود :
 Dim F As New OpenFileDialog
        If F.ShowDialog = DialogResult.OK Then
            PictureBox1.ImageLocation = F.FileName
        End If
الرد
تم الشكر بواسطة: عبد العزيز البسكري
#8
السلام عليكم


عن طريق اداة OpenFileDialoge وسيتم حذف الصورة التي جلبتها من اي مكان كان 
الكود جربته وشغال 100%
واعيد لك الكود مع سطر الحذف مباشرة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim ofd As New OpenFileDialog()
       ofd.Filter = "All Image(jpg,Png)|*.jpg;*.png|AllPicture|*.*"
       If ofd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
           Dim Photo As String = ofd.FileName ' مسار الصورة واسمها

           '  فتح الصورة المجلوبة باسمها ومسارها ثم وضعها في ملف ستريم ثم في بتماب ثم نضعها في مربع الصورة
           Dim FS As FileStream = System.IO.File.Open(Photo, FileMode.Open)
           Dim bmp As New Bitmap(FS)
           FS.Close()  ' اغلاق الفايل ستريم
           PictureBox1.Image = bmp
           ' بهذه الطريقة فقط يمكن حذف الصورة من الاصل
 File.Delete(ofd.FileName) ' هنا حذف الصورة
       End If
     
   End Sub
وهذا الكود يحمل الصورة من مجلد بجانب الملف التنفيذي
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

           '  فتح الصورة المجلوبة باسمها ومسارها ثم وضعها في ملف ستريم ثم في بتماب ثم نضعها في مربع الصورة
       Dim FS As FileStream = System.IO.File.Open("MyPicture\a12.jpg", FileMode.Open)
           Dim bmp As New Bitmap(FS)
           FS.Close()  ' اغلاق الفايل ستريم
           PictureBox1.Image = bmp
           ' بهذه الطريقة فقط يمكن حذف الصورة من الاصل
       File.Delete("MyPicture\a12.jpg") ' هنا حذف الصورة


   End Sub
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: عبد العزيز البسكري
#9
(04-07-20, 02:02 AM)سامي محمد كتب : غير طريقة تحميل الصورة .... استخدم هذه

كود :
 Dim F As New OpenFileDialog
        If F.ShowDialog = DialogResult.OK Then
            PictureBox1.ImageLocation = F.FileName
        End If

للأسف ............ مفيش فايدة 


أصدقائى الأعزاء ..
زملائى الأفاضل
أساتذتى المحترمين ..
لكم منى التحية على ما بذلتموه من جهد .. 
لكن المشكلة لم يتم حلها و ما زالت قائمة .. و بعد بحث و جهد ليومين متتاليين حتى الآن فان المشكلة تكمن فى التالى :
أى كود مما تم وضعه من حضراتكم يحذف الصورة فعلا اذا تم استخدامه لحذف الصورة مباشرة 


لكن

اذا تم فتح الصورة فى مربع صور PictureBox ثم محاولة حذفها فلن يتم الحذف .. لماذااااااااااا  لأنه ببساطة قد أصبحت عالقة بذاكرة السيستم

 .. و لن يتم حذفها الا اذا قمنا باغلاق النافذة أو البرنامج تحديدا و تشغيله مرة أخرى .. 

أتمنى أن تكون الفكرة واضحة
المشكلة لا تزال قائمة 
أتمنى من لديه أى أفكار أن يضعها 
تقبلوا الاحترام
الرد
تم الشكر بواسطة: عبد العزيز البسكري
#10
السلام عليكم
اخي الصورة الاصلية وفق الطريقة التي ذكرتها لك لم تعد لها اي علاقة مع البرنامج
حيث تم انشاء نسخة منها وتم وضعها في مربع الصورة
الصورة الاصلية يمكنك حذفها يدويا مباشرة من نظام ويندوز او بكود من البرنامح سواء كان البرنامج مفتوحا ام مغلقا
الحمد لله اني تعلمت من استاذنا الغالي ابو ايهاب جزاه الله كل خير ان اقوم بتجربة الكود قبل نشره
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: Mohamad Anan



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم