تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ما هو سبب الخطأ A Generic Error Occurred in GDI+
#1
السلام عليكم
اخوتي الاعزاء ما معنى الخطأ التالي ان امكن
A Generic Error Occurred in GDI+
المشكلة الخطأ اعلاه لا يظهر دائما و انما بشكل متقطع و هو غير مرتبط بعملية محددة في البرنامج علماً ان الخطأ ليس له علاقة بالتعامل مع الصور و هو يحصل في البروسيجرات الموجودة في ملف الـ (dll) 
ان امكن شرح سبب هذا الخطأ و المعالجات

ملاحظة: 
* صورة الخطأ في المرفقات
* SalePointInsert_UpdateRec الموجود في اعلى الصورة المرفقة هو اسم ملف الـ (dll)

اجمل تحية ..


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#2
وهل ملف dll مفتوح المصدر، أي هل نستطيع أن نرى الكود، فقد يكون جزء متعلق بالرسم بشكل ما، وتسبب بهذه المشكلة.

إذا أمكن وضع المشروع، أو كود ملف dll، لأن المسألة متعلقة بالرسوميات أو حفظ الصور.
الرد
#3
الخلاصة ان الكود الذي تسبب في الخطأ كانت نتيجته خطأ عام مع ملف System.Drawing بشكل ما

ومن عنوان الخطأ ربما السبب هو عملية Update Rectangle و في تلك الحالة قد يكون السبب أنه لا يتم تمرير البيانات بشكل دقيق
و بالتالي عملية الرسم لا تتم بالشكل المطلوب
أو انه يتم عمل Dispose لبعض المتغيرات المستخدمة في الرسم قبل أن تتم عملية الرسم

أن أقدر أقول لك ألف سبب للمشكلة هذه لكن بدون الكود فإن تحديد أسباب الخطأ سيكون صعب
الرد
تم الشكر بواسطة: ابراهيم النعيمي
#4
بداية اشكر الاخوة (abdualla) و (Silverlight)  على المشاركة 
حيث نبهتني جملة الاخ (Silverlight) التالية 

إقتباس :الخلاصة ان الكود الذي تسبب في الخطأ كانت نتيجته خطأ عام مع ملف System.Drawing بشكل ما


ثانياً اعتذر عن الجملة التالية
إقتباس :علماً ان الخطأ ليس له علاقة بالتعامل مع الصور 

لاني بعد ان قمت بتدقيق ملف ال(dll) وجدت الاجراء التالي الذي يتعامل مع الصور و لكن للامانة فاتني انه ممكن ان يتسبب بالخطأ اعلاه
PHP كود :
'============================================================================================================================
    '
============================================================================================================================
 
   ' لرسم علامة × على زر الحذف في الكرد
    '
============================================================================================================================
 
   '============================================================================================================================
    Public Shared Sub DGVDeletebtn(ByVal e As DataGridViewCellPaintingEventArgs, ByVal cellindex As Int16)
        Try
            '
KillProcess()

 
           If e.ColumnIndex cellindex Then
                e
.Paint(e.CellBoundsDataGridViewPaintParts.All)

 
               Dim bmpFind As Bitmap Image.FromFile("deletebtn.png")
 
               Dim ico As Icon Icon.FromHandle(bmpFind.GetHicon)
 
               e.Graphics.DrawIcon(icoe.CellBounds.Lefte.CellBounds.Top 1)
 
               e.Handled True
            End 
If
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
       End Try

 
   End Sub 

الاجراء اعلاه كما هو واضح يقوم بتعيين صورة من نوع (PNG) تتضمن علامة الحذف على احد ازرار الـ (DataGridView) حيث ان وظيفة ذلك الزر حذف ذلك القيد فقط 
سؤالي هو هل ان الاجراء اعلاه ممكن ان يتسبب بهذا الخطأ و ما هي التعديلات المطلوبة


اجمل تحية ..
الرد
تم الشكر بواسطة:
#5
استفسار!
لماذا تريد تحويل الصورة لأيقونة؟ في حين أنه يمكنك استخدامها كما هي
(انصح بوضع الصورة في الريسورس كما في المثال)
PHP كود :
'============================================================================================================================
    '
============================================================================================================================
    
' لرسم علامة × على زر الحذف في الكرد
    '
============================================================================================================================
    
'============================================================================================================================
    Public Shared Sub DGVDeletebtn(ByVal e As DataGridViewCellPaintingEventArgs, ByVal cellindex As Int16)
        '
KillProcess()

        If 
e.ColumnIndex cellindex Then
            e
.Paint(e.CellBoundsDataGridViewPaintParts.All)
            
e.Graphics.DrawImage(My.Resources.deletebtne.CellBounds.Xe.CellBounds.1)
            
e.Handled True
        End 
If
    
End Sub 

ملاحظة هامة: لا تستخدم أي رسائل مثل MsgBox أو غيرها داخل أي حدث Paint لأنها غالباً ستتسبب تعارض مع الرسم

لا تنسى أن تضع الصورة deletebtn.png في الريسورس Resources
الرد
تم الشكر بواسطة: sendbad100 , ابراهيم النعيمي
#6
شكراً اخي abdualla جعله الله في ميزان حسناتك

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

و لتفادي تكرار مثل هذا الاشياء عليك ان تقرأ الصورة اولا ثم تتاكد انها لا تساوي Nothing ثم تقوم بتحويلها إلي أيقونة
من  الافضل أيضا ان تتم عملية تحويل الصورة الي ايقونة باستخدام دالة منفصلة
الرد
تم الشكر بواسطة: sendbad100 , ابراهيم النعيمي , abdualla
#8
شكراً اخي (Silverlight) 
بارك الله بيك على التوضيح .. الان المشكلة باتت واضحة 

مع ذلك قمت باستخدام تعديل الاخ (abdualla) لانه بالفعل لا يوجد حاجة لتحويل الصورة الى ايقونة مع الاستفادة من ملاحظتك القيمة ليكون الاجراء بالشكل التالي:
PHP كود :
On Error Resume Next
        If e
.ColumnIndex cellindex Then
            e
.Paint(e.CellBoundsDataGridViewPaintParts.All)
 
           If Not My.Resources.deletebtn Is Nothing Then
                e
.Graphics.DrawImage(My.Resources.deletebtne.CellBounds.Xe.CellBounds.1)
 
           End If
 
           e.Handled True
        End 
If 

اي الغاء تحويل الصورة الى ايكونة مع قراءة الصورة قبل رسمها داخل خلية الكرد فيو

اجمل تحية ..
الرد
تم الشكر بواسطة: abdualla
#9
أخي ابراهيم

لا تحتاج إلى هذا السطر  If Not My.Resources.deletebtn Is Nothing Then
لأن الصورة في الريسورس، أي مدمج مع ملف البرنامج وليس ملف خارجي لتتأكد من وجوده
PHP كود :
       If e.ColumnIndex cellindex Then
            e
.Paint(e.CellBoundsDataGridViewPaintParts.All)
 
           e.Graphics.DrawImage(My.Resources.deletebtne.CellBounds.Xe.CellBounds.1)
 
           e.Handled True
        End 
If 
الرد
تم الشكر بواسطة: sendbad100 , ابراهيم النعيمي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ما سبب هذا الخطأ فقد ارهقتني Attempted to read or write protected memory؟؟ dametucorazon 0 39 19-03-19, 09:53 AM
آخر رد: dametucorazon
  طريقة تكرار الامر تلقائيا | حل مشكلة script error في webbrowser عند فتح صفحة ما soloxocf1 6 284 18-03-19, 09:16 AM
آخر رد: 5000
Exclamation [VB.NET] اصطياد رسالة الخطأ دون يتوقف البرنامج sniperjawadino 7 229 07-03-19, 09:28 PM
آخر رد: elgokr
  كيفية جمع عمود داتا جريد به قيمة فارغة وتجاوز الخطأ alfaiz678 5 194 01-03-19, 03:10 PM
آخر رد: حريف برمجة
  ما هو حل مشكلة هذا ال Error The connection was not closed. The connection's current mostafa nada 3 156 12-02-19, 06:58 PM
آخر رد: asemshahen5
Exclamation [VB.NET] أين الخطأ في مشروعي abarrak 3 166 11-02-19, 12:41 PM
آخر رد: ابراهيم ايبو
Photo اين الخطأ في الكود لو سمحتم samira20 6 272 01-12-18, 01:55 PM
آخر رد: asemshahen5
Photo اين الخطأ في الكود لو سمحتم samira20 0 147 30-11-18, 11:08 AM
آخر رد: samira20
  [سؤال] ما الخطأ في الكود التالي اسامه الهرماوي 2 202 23-11-18, 05:52 PM
آخر رد: Rabeea Qbaha
  [سؤال] ما الخطأ في هذا الكود اسامه الهرماوي 3 209 21-11-18, 02:05 AM
آخر رد: اسامه الهرماوي

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


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