Windows는 멀티 iCon 파일에서 잘못된 아이콘을 선택하고 크기가 올바른자가 렌더링합니다.

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

  •  03-07-2019
  •  | 
  •  

문제

메인 애플리케이션 아이콘과 시스템 트레이 아이콘으로 사용되는 5 개의 아이콘 크기가 포함 된 .ICO 파일이 있습니다.

작업 표시 줄에 표시되면 아이콘은 원하는 16x16 형식을 사용합니다. 아이콘이 알림 영역/시스템 트레이에 나타나면 32x32 형식을 사용하고 있으며 Windows는 16x16 아이콘으로 줄어 듭니다.

Windows가 알림 영역에서 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