واجهة مستخدم مستقلة عن حجم الخط:كسر كل شيء عندما تحولت إلى 120 نقطة في البوصة؟

StackOverflow https://stackoverflow.com/questions/50528

سؤال

لذلك كنت أقرأ إرشادات واجهة المستخدم لنظام التشغيل Windows Vista التي ربطها أحد الأشخاص في سؤال آخر، وذكروا أنه يجب أن تكون قادرًا على النجاة من التبديل إلى 120 نقطة في البوصة.حسنًا، لقد قمت بتشغيل جهازي الافتراضي مع تثبيت تطبيقي، وماذا نحصل عليه...آآآآه!!!فشل واجهة المستخدم الضخمة!

كل شيء مختلط:بعض الحاويات ليست كبيرة بما يكفي لاستيعاب النص الخاص بها؛بعض عناصر التحكم التي تم وضعها "بجوار بعضها البعض" أصبحت الآن مضغوطة/منتشرة معًا؛بعض الأزرار ليست طويلة بما فيه الكفاية؛لي ListView الأعمدة ليست واسعة بما فيه الكفاية ...com.eeek.

يبدو أن هناك نهجًا مختلفًا تمامًا.كان برنامجي السابق يستخدم بشكل أساسي مصمم VS2008 Windows Forms لإنشاء تخطيط يعتمد على البكسل على ما أعتقد.أستطيع أن أرى أنه إذا كنت سألتزم باستخدام Windows Forms، FlowLayoutPanelقد يكون الأمر مفيدًا، على الرغم من أنني وجدتها غير مرنة إلى حد ما في الماضي.كما أنها لا تحل مشكلة الحاويات (على سبيل المثال.النموذج نفسه) ليست كبيرة بما فيه الكفاية؛ويفترض أن هناك طريقة للقيام بذلك؟ربما ذلك AutoSize ملكية؟

قد يكون هذا أيضًا علامة على أن الوقت قد حان للانتقال إلى WPF؛لدي انطباع بأنه مصمم خصيصًا لهذا النوع من الأشياء.

يبدو أن المشكلة الأساسية تتلخص في:

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

المحلول

تعلم كيف مِرسَاة و الرصيف خصائص العمل على الضوابط الخاصة بك، وترك أي شيء يمكن الحجم التلقائي نفسها وحدها، واستخدام TableLayoutPanel عندما تستطيع.

إذا قمت بهذه الأشياء الثلاثة، فستحصل على الكثير من تجربة تصميم WPF في Windows Forms.مصممة بشكل جيد TableLayoutPanel سيبذل قصارى جهده لتغيير حجم عناصر التحكم بحيث تتناسب مع النموذج بشكل صحيح.مدموج مع الحجم التلقائي الضوابط، والإرساء، و وضع القياس التلقائي كما ذكر Soeren Kuklau، يجب أن تكون قادرًا على صنع شيء جيد الحجم.إذا لم يكن الأمر كذلك، فقد يحتوي النموذج الخاص بك على الكثير من عناصر التحكم فيه؛فكر في تقسيمها إلى صفحات علامات تبويب أو صناديق أدوات عائمة أو مساحة أخرى.

في WPF يكون الأمر أسهل كثيرًا لأن مفهوم عناصر التحكم في الحجم التلقائي مدمج؛في معظم الحالات، إذا كنت تقوم بوضع عنصر WPF باستخدام زوج إحداثي، فإنك تقوم بذلك بشكل خاطئ.ومع ذلك، لا يمكنك تغيير حقيقة أنه عند الدقة المنخفضة لا يتطلب الأمر الكثير من النص بدقة 120 نقطة في البوصة لملء الشاشة.في بعض الأحيان لا تكمن المشكلة في تخطيطك، بل في محاولة وضع الكثير في مساحة صغيرة.

نصائح أخرى

إذا كنت سألتزم باستخدام Windows Forms، فما هي كل الحيل لتحقيق تخطيط مستقل عن حجم الخط يمكنه تحمل قيام المستخدم بتعيين خطوطه كبيرة، أو ضبط العرض على 120 نقطة في البوصة؟

لواحد، وضع القياس التلقائي قد يكون صديقك.

بشكل عام، تكمن المشكلة في استخدام "ثابتين" مختلفين لتخطيط النموذج، ثم تغيير أحد هذين الثابتين دون تغيير الآخر.

أنت تستخدم وحدات البكسل لكيانات النموذج الخاص بك، والنقاط (بالبوصة بشكل أساسي) لتحديد حجم الخط.ترتبط وحدات البكسل والنقاط بواسطة DPI، لذلك تقوم بتغيير DPI وفجأة لا تتوافق قيم البكسل الثابتة مع قيم النقاط الثابتة الخاصة بك.

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

أنا شخصياً سأغير الكيانات الموجودة في النموذج إلى بوصات.أنا لست من مستخدمي لغة C#، لذا لا أعرف ما إذا كان هذا مدعومًا محليًا، أو إذا كان عليك إجراء بعض التحجيم الديناميكي للنماذج عند بدء تشغيل التطبيق.

إذا كان عليك القيام بذلك في برنامجك، فاستمر في تغيير حجم كل شيء بشكل طبيعي (على سبيل المثال، إلى 96 نقطة في البوصة المعتادة).

عندما يبدأ التطبيق الخاص بك، تأكد من أن النظام عند 96 نقطة في البوصة قبل عرض النماذج الخاصة بك.إذا كان الأمر كذلك، عظيم.إذا لم يكن الأمر كذلك، فقم بتعيين متغير باستخدام عامل التصحيح، وقم بقياس وترجمة (تعديل كل من الموقع والحجم) لكل كيان قبل إظهار النموذج.

ومع ذلك، فإن الهدف النهائي هو تحديد كل شيء بالبوصة أو النقاط (النقطة هي 1/72 من البوصة) والسماح لنظام التشغيل بالتعامل معها.قد تضطر إلى التعامل مع الحالات الزاوية (شاشة خارجية مع DPI مضبوطة بشكل صحيح ستعرض التطبيق الخاص بك ببضعة بكسلات ...)

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