سؤال

والقفز إلى عالم التحكم المخصصة WPF، وكان يتساءل ما هي أفضل طريقة لتصميم أن تحكم HexGrid يكون؟ أعتقد المفضلة فوق المنضدة لعبة الحرب الخاصة بك. أو، على الأرجح على قدم المساواة، لعبة الفيديو المفضلة لديك أن يسرق التصميم من تاريخ مشرف من فوق المنضدة ألعاب الحرب.

والنموذج الكامن وراء الكشف عن طريقة واحد كبير، وذلك كجزء من فئة الخريطة:

Hex GetHex(int x, int y, int z)*;

وعرافة يحتوي على جميع البيانات ذات الصلة (في هذه اللحظة، تعداد التضاريس التي تعين 1: 1 إلى لون الخلفية؛ بداية صغيرة ...).

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

ومن الناحية المثالية فإن عنصر توسيع لملء الحاويات نظيفة، ويكون الإعلان عنها مباشرة في XAML.

ما أنا تبحث عن مخطط ناقصة ما أحتاج إلى القيام به لبناء هذا، وليس عنصرا الجاهزة.

و* على الرغم من أنني كان يجري ذكي جدا مع هذا نظام العنونة، ولكن يبدو أنا في وقت متأخر لحزب .

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

المحلول

وتحرير: وإليك وصلة إلى الصفحة مشروع بيت لوالتي لديها عينة عرافة الشبكة. http://blois.us/Projects.html هناك عينة الاستطلاعية التي تظهر دعا الاستطلاعية المشروع الذي يحتوي على الشبكة عرافة، وربما يستخدم نفس رمز الأساسية التي كاسحة ألغام لا. أنا لم ينظر في ذلك حتى الآن. ومن سيلفرلايت 3 حتى قد تحتاج إلى ترقية. كان كاسحة ألغام أنيقة جدا.

ورالف

وORIGINAL: كان هناك عينة ل Silverlight 2 التي كتبها peter بلوا من نسخة سداسية كاسحة ألغام.

وتضمنت شفرة المصدر. وكان لديه أسلوب أنيق للغاية للقيام بذلك عن طريق تجاوز measureoverride وarrangeoverride على الشبكة. تمريرات الماوس، الخ عملت الغرامة. كان هناك رمز صغيرة بشكل ملحوظ.

وأنا لا يمكن العثور على المشروع على شبكة الإنترنت أكثر من ذلك، على الرغم من أن جوجل لديها صلة قديمة إليها من خلال البحث عن مسدس كاسحة ألغام شفرة المصدر سيلفرلايت بلوا

وبيتر بلوا لديه بلوق الحالية على العنوان أدناه، لذلك قد حاول الاتصال به هنا ... http://blois.us/Projects.html

وحظا سعيدا ويقول لي كيف ستسير الامور، وانا ذاهب ليكون دونغ شيئا من هذا القبيل.

نصائح أخرى

في رأيي في برنامج الأغذية العالمي هو أكثر معقول لتصميم HexGrid باعتباره Panel وليس كما UserControl. لوحات لا يكون التمثيل المرئي ولا تملك إلا أن ترتيب العناصر التابعة بشكل صحيح (في حالة HexGrid - على شكل قرص العسل). يجب أن يكون تلك العناصر التابعة بدورها شكل سداسي.

والذي يدل على مفهوم: مشروع HexGrid بلدي (كبيرة جدا للنشر هنا)

CodeProject المقالة

جيثب مستودع

على HexList : لمحدد ItemsControl الذي يعرض العناصر الموجودة في الحاوية HexItem على لوحة HexGrid

على HexGrid : لوحة الذي يرتب العناصر التابعة على شكل قرص العسل

على HexItem : لContentControl على شكل مسدس

ومثال على الاستخدام التعريفي:

<hx:HexList Name="HexColors" Orientation="Vertical"
            Grid.Row="1"
            Padding="10"
            SelectedIndex="0"
            Background="{Binding Path=SelectedItem.Background, RelativeSource={RelativeSource Self}}"
            RowCount="5" ColumnCount="5">
    <hx:HexItem Grid.Row="0" Grid.Column="1" Background="#006699"/>
    <hx:HexItem Grid.Row="0" Grid.Column="2" Background="#0033CC"/>
    <hx:HexItem Grid.Row="0" Grid.Column="3" Background="#3333FF"/>
    <!--...-->
    <hx:HexItem Grid.Row="4" Grid.Column="1" Background="#CC9900"/>
    <hx:HexItem Grid.Row="4" Grid.Column="2" Background="#FF3300"/>
    <hx:HexItem Grid.Row="4" Grid.Column="3" Background="#CC0000"/>
</hx:HexList>

وأنا أفهم أن مسألة هو تزال مفيدة رغم قدمها ولكن تشاركونني حل عادل في القضية

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