تقييم الموضوع :
  • 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 , ابراهيم النعيمي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ما الخطأ في هذا الكود الميساني 1 57 18-12-17, 01:02 PM
آخر رد: طالب برمجة
  ايه الخطأ هنا Mina Botros 6 262 11-07-17, 06:48 PM
آخر رد: silverlight
  ما الخطأ في حفظ جدول إلى ملف نصي ahmedfa71 14 500 15-05-17, 05:47 PM
آخر رد: العواد الصغير
  [سؤال] ما هو الخطأ في الكود التالي .. أرجو المساعدة abo_alaa315 0 234 22-01-17, 02:27 PM
آخر رد: abo_alaa315
  [VB.NET] معني رسالة الخطأ يسرى7 10 794 16-01-17, 01:08 AM
آخر رد: يسرى7
  كيفية تغير رسائل الخطأ؟ noway 4 527 12-01-17, 02:05 AM
آخر رد: يسرى7
  ما الخطأ فى هذا الكود ؟ what's error in my code ? twitter acount creator الماجيك مسعد 16 1,110 13-12-16, 01:21 AM
آخر رد: الماجيك مسعد
  [SQL] ماهو سبب هذا الخطأ بعد تثبيت SQL thevirus 2 420 30-11-16, 08:34 PM
آخر رد: ابو ليلى
  [VB.NET] ملف exe لا يعمل عند تشغيله ويعطي رسالة الخطأ المرفقة نسيم 4 519 13-10-16, 09:57 PM
آخر رد: ممدوح
  [VB.NET] ما هو الخطأ في هذا الكود ... وكيف يمكن تخزين التاريخ abo.alaa315 3 444 07-10-16, 03:33 PM
آخر رد: tifagreet

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


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