سؤال

  1. أريد إنشاء قائمة قابلة للتمرير من الصور المنال من الإنترنت و إعطاء المستخدم القدرة على النقر على ذلك.كيف يمكنني أن تذهب عن القيام بذلك في WinForms/C# ؟ هل من الممكن لإضافة تحكم picturebox/ تحكم listBox?

  2. حاولت إضافة قائمة picturebox إلى UserControl مع AutoScroll تعيين إلى true ، والتي سوف تعطي لي أشعر باستخدام مربع القائمة, هذا هو النهج السليم ؟

  3. كما أنني حاولت وضع ImageLocation من pictureBox إلى URI من الصورة ثم دعا الحمل() على تحميل صورة, ومع ذلك ، ومع ذلك النموذج تجميد ما يصل!كيف يمكنني الذهاب على تحديث كل من picturebox بطريقة متتابعة دون تجميد أدائي ؟

شكرا لك Azlam

هل كانت مفيدة؟

المحلول

سوف الإجابة على السؤال الثالث أولا ، لأن هذا هو الشيء الوحيد الذي أنا حقا أعرف الجواب.هناك LoadAsync (طريقة) على مربع الصورة التي سيتم تحميل الصورة في موضوع منفصل و لن تعليق التطبيق الخاص بك.

أما الأسئلة الأخرى, أنا أيضا المرجح أن تبدأ مع المستخدم من التحكم في وضع الصور هناك.الشيء الوحيد الذي يمكنني أن أقترح أن يكون أولا إنشاء عنصر تحكم مستخدم يحتوي على صورة مربع و مربع نص متعدد الأسطر أو richtextbox بجانبه.إيقاف الحدود على النص ، وقد طفيف الحدود حول مراقبة كامل.هذا سوف يسمح لك لعرض الصورة, مع بعض النص التالي إلى ذلك.ثم الخاص بك الفعلية النهائية التحكم سوف يكون مجرد مجموعة من هذه الضوابط ، مع القدرة على إضافة لهم حسب الحاجة.

- بلدي 2 سنت....

نصائح أخرى

هل تمانع التمرير عموديا ؟

وأود أن تبدأ مع تحكم DataGridView كقاعدة وخلق التنفيذ التالية:

1) إنشاء عمود مخصص و celltype المستمدة من DataGridViewImageColumn.هل يمكن أن نطلق عليهم "CronosNetImageColumn", "CronosNetImageCell".

2) إنشاء فئة "CronosImageDetails" عقد بيانات الخلية (تشمل خصائص عرض النص والصورة url).هذا سيتم تمريرها في قيمة لكل خلية.مثلا:

ImageGrid.الصفوف.Add(new CronosImageDetails { DisplayText="يوم في الشاطئ" ، ImageURL="http://...beach.jpg" });

3) تجاوز خلية الطلاء() استخدام WebClient للحصول على صورة واستخدام هـ.الرسومات.DrawImage(ImageObtainedFromWebClient) أن ترسم صورة إلى الخلية.هل يمكن استخدام هـ.الرسومات.الرباط((CronosImageDetails)القيمة.DisplayText,...) تراكب النص في الخلية.

هذا حل سريع سوف تحصل على التمرير imagelist فقط بتحميل الصور المستخدم إلى التمرير عبر قائمة ويوفر قاعدة صلبة من أجل التحسين.

أوصى مزيد من التحسينات:

أ) إنشاء backbuffer نقطية و الرسومات رسم بيانات الخلية.

ب) إعداد الطلاء() ببساطة طلاء backbuffer بدلا من القيام بالعمل للحصول على صورة

ج) إنشاء خلية جديدة طريقة LoadImage() أن يولد موضوع جديد أن بتحميل صورة و يرسم على ظهره العازلة.

د) الطلاء() (أو منفصلة مساعد الخيط) تتبع اتجاه تسريع التمرير و تقدير الخلايا التي تحتاج إلى أن تكون مسبقة.الزناد LoadImage() على تلك الخلايا.

هـ) تهيئة الظهر العازلة من كل خلية مع تحميل الصورة.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top