تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] مشكلة فى كود DrawSubItem
#11
(08-08-16, 04:44 PM)silverlight كتب : أخي الفاضل أسامة

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

بشكل مبدئي فإن الحل الأمثل لك هو ان تقوم بتخزين الصور في مصفوفة أو في ملف و الفكرة هنا هي حفظ الصور بأسلوب أخر و الحفظ إما أن يكون علي هيئة Bytes او علي هيئة IntPtr
ثم وعند الحاجة تقوم بتحويل Bytes  أو IntPtr الي صورة
و أهم مميزات هذا الأسلوب أن حجم مشروعك سيصبح أقل و لن تستهلك كثيرا من الذاكرة

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

لكن قبل هذا أرجو أن تجيب سؤالي التالي
لماذا تريد أن تملأ ListView بهذا الكم من الأيقونات ؟
إن أوضحت لي أسبابك في ذلك فلربما نجد حلا بديلا أسهل
الفكرة هى اضافة items و subitems الى ListView باسم الشخص و رقم ثم رقم الملف يتم اخذ اخر رقم بعد رقم هذا الشخص و اظهار بيانات فى فورم اخر برقم الملف مثل اسم الشخص Ahmed_ رقم الشخص 0_ رقم الملف _1 و يتم حفظ بيانات هذا الشخص فى ملف database او xml فو text ليتم اضافة البيانات الى ListView عند بدء الفورم اريد رسم صورة الشخص فى الخانة الخاصة به فى ListView عند بدء الفورم او اضافة شخص جديد
المشكلة الوحيدة هى الرسم
الرد }}}
تم الشكر بواسطة:
#12
الليست فيو بطبيعة تصميمها بطيئة جدا في تحميل عدد كبير من البيانات
و علي ما يبدو أنك و لاحقا ستستبدل الأيقونات بصور أشخاص أي أن حجم الصور سيكون أكبر و بالتالي سيكون لديك بطء أكثر
تخيل كيف ستكون سرعة تحميل البيانات مع رسم البيانات .... طبعا النتيجة بطء أكثر

حاول تستخدم BeginUpdate قبل تحميل البيانات ثم تستخدم EndUpdate بعد تحميل البيانات في الليست فيو هذا سوف يقوم بزيادة سرعة اضافة البيانات الي الليست فيو بشكل ملحوظ


كود :
       ListView1.OwnerDraw = True
       ListView1.BeginUpdate()

       With ListView1.Items.Add("1324567891_6")
           .SubItems.Add("1324567892_7")
           .SubItems.Add("1324567893_3")
           .SubItems.Add("1324567894_3")
           .SubItems.Add("1324567895_1")
           .SubItems.Add("1324567896_2")
           .SubItems.Add("1324567898_3")
           .SubItems.Add("1324567899_2")
           .SubItems.Add("2324567891_4")
           .SubItems.Add("2324567892_6")
           .SubItems.Add("2324567893_5")
           .SubItems.Add("2324567894_8")
           .SubItems.Add("2324567895_7")
           .SubItems.Add("2324567896_9")
           .SubItems.Add("1324567899_2")
       End With

       ' باقي الكود الخاص بتحميل البيانات يكون هنا

       ListView1.EndUpdate()
الرد }}}
تم الشكر بواسطة: أسامة , أسامة
#13
(09-08-16, 03:02 PM)silverlight كتب : الليست فيو بطبيعة تصميمها بطيئة جدا في تحميل عدد كبير من البيانات
و علي ما يبدو أنك و لاحقا ستستبدل الأيقونات بصور أشخاص أي أن حجم الصور سيكون أكبر و بالتالي سيكون لديك بطء أكثر
تخيل كيف ستكون سرعة تحميل البيانات مع رسم البيانات .... طبعا النتيجة بطء أكثر

حاول تستخدم BeginUpdate قبل تحميل البيانات ثم تستخدم EndUpdate بعد تحميل البيانات في الليست فيو هذا سوف يقوم بزيادة سرعة اضافة البيانات الي الليست فيو بشكل ملحوظ


كود :
       ListView1.OwnerDraw = True
       ListView1.BeginUpdate()

       With ListView1.Items.Add("1324567891_6")
           .SubItems.Add("1324567892_7")
           .SubItems.Add("1324567893_3")
           .SubItems.Add("1324567894_3")
           .SubItems.Add("1324567895_1")
           .SubItems.Add("1324567896_2")
           .SubItems.Add("1324567898_3")
           .SubItems.Add("1324567899_2")
           .SubItems.Add("2324567891_4")
           .SubItems.Add("2324567892_6")
           .SubItems.Add("2324567893_5")
           .SubItems.Add("2324567894_8")
           .SubItems.Add("2324567895_7")
           .SubItems.Add("2324567896_9")
           .SubItems.Add("1324567899_2")
       End With

       ' باقي الكود الخاص بتحميل البيانات يكون هنا

       ListView1.EndUpdate()
جزاك الله خير بالنسبة لحجم الصور سوف يكون 32x32 يعنى حوالى 100kb
الرد }}}
تم الشكر بواسطة:



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


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