يختار ويندوز رمز الخطأ من ملف متعددة رمز ويجعل النفس لتصحيح حجم

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي ملف منظمة البن الدولية مع 5 أحجام رمز جزءا لا يتجزأ من ذلك تستخدم كرمز التطبيق الرئيسية ورمز علبة النظام.

وعندما يظهر في شريط المهام رمز يستخدم شكل 16X16 الذي هو المطلوب. عندما يظهر رمز تصل في علبة منطقة الإعلام / النظام، فإنه يستخدم تنسيق 32x32 ويندوز هو جعل ذلك وصولا الى رمز 16X16، والتي تبدو مروعة.

وكيف يمكنني اجبار النوافذ لاستخدام حجم رمز 16X16 في منطقة الإعلام؟ وهنا رمز بلادي لوضع رمز في علبة النظام:

ContextMenu cmNotify = new ContextMenu();
MenuItem miNotify = new MenuItem(Properties.Resources.Notify_Text);
miNotify.DefaultItem = true;
miNotify.Click += new EventHandler(notifyHandler);
cmNotify.MenuItems.Add(miNotify);


notifyIcon = new NotifyIcon();
notifyIcon.Icon = this.Icon;
notifyIcon.Visible = true;
notifyIcon.ContextMenu = cmNotify;
notifyIcon.Text = AppConstants.APPLICATION_NAME;
هل كانت مفيدة؟

المحلول

وكل الردود قريبة، ولكنها تحتوي على السم خفية. يجب أن لا ترميز ثابت الحجم المطلوب كما 16X16.

وبدلا من ذلك، الاستعلام SystemInformation.SmallIconSize لتحديد أبعاد المناسبة. على الرغم من أن الافتراضي هو بالتأكيد 16X16، وهذا يمكن أن تغير أشياء مختلفة، مثل DPI التحجيم.

لل MSDN المقالة لمزيد من المعلومات حول هذه الخاصية.

ومثال على استخدام يكون

notifyIcon.Icon = new System.Drawing.Icon(this.Icon, SystemInformation.SmallIconSize),

نصائح أخرى

تغيير هذا:

notifyIcon.Icon = this.Icon;

وعلى هذا:

notifyIcon.Icon = new System.Drawing.Icon(this.Icon, 16, 16);

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

Assembly asm = this.GetType().Assembly;

var smallIconSize = new System.Drawing.Size(16, 16);
notifyIcon.Icon = new System.Drawing.Icon(
    asm.GetManifestResourceStream("MyPrettyAppIcon.ico"), smallIconSize);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top