(08-08-16, 04:44 PM)silverlight كتب : [ -> ]أخي الفاضل أسامة
انت تحتاج الي استخدام اسلوب أخر لتخزين الصور في المشروع خاصة أن حجم الصور ضخم وكما لاحظت من مشروعك فإن الصور التي تستخدمها عبارة عن ايقونات
بشكل مبدئي فإن الحل الأمثل لك هو ان تقوم بتخزين الصور في مصفوفة أو في ملف و الفكرة هنا هي حفظ الصور بأسلوب أخر و الحفظ إما أن يكون علي هيئة Bytes او علي هيئة IntPtr
ثم وعند الحاجة تقوم بتحويل Bytes أو IntPtr الي صورة
و أهم مميزات هذا الأسلوب أن حجم مشروعك سيصبح أقل و لن تستهلك كثيرا من الذاكرة
عموما الكلام النظري حلو و سهل و لكي نتأكد من أن ما أقوله مناسبا لك فعلينك تحويل هذا الكلام النظري الي تطبيق عملي في شكل أكواد
لكن قبل هذا أرجو أن تجيب سؤالي التالي
لماذا تريد أن تملأ ListView بهذا الكم من الأيقونات ؟
إن أوضحت لي أسبابك في ذلك فلربما نجد حلا بديلا أسهل
الفكرة هى اضافة items و subitems الى ListView باسم الشخص و رقم ثم رقم الملف يتم اخذ اخر رقم بعد رقم هذا الشخص و اظهار بيانات فى فورم اخر برقم الملف مثل اسم الشخص Ahmed_ رقم الشخص 0_ رقم الملف _1 و يتم حفظ بيانات هذا الشخص فى ملف database او xml فو text ليتم اضافة البيانات الى ListView عند بدء الفورم اريد رسم صورة الشخص فى الخانة الخاصة به فى ListView عند بدء الفورم او اضافة شخص جديد
المشكلة الوحيدة هى الرسم
الليست فيو بطبيعة تصميمها بطيئة جدا في تحميل عدد كبير من البيانات
و علي ما يبدو أنك و لاحقا ستستبدل الأيقونات بصور أشخاص أي أن حجم الصور سيكون أكبر و بالتالي سيكون لديك بطء أكثر
تخيل كيف ستكون سرعة تحميل البيانات مع رسم البيانات .... طبعا النتيجة بطء أكثر
حاول تستخدم 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()
(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