programing

WPF의 리소스인 아이콘을 사용하려면 어떻게 해야 하나요?

newnotes 2023. 4. 10. 22:14
반응형

WPF의 리소스인 아이콘을 사용하려면 어떻게 해야 하나요?

리소스로 포함된 .ico 파일이 있습니다(리소스로 설정된 빌드 작업).Notify를 작성하려고 합니다.아이콘. 아이콘은 어떻게 참조할 수 있나요?

notifyIcon = new NotifyIcon();
notifyIcon.Icon = ??     // my icon file is called MyIcon.ico and is embedded

아이콘 파일을 프로젝트 어셈블리 중 하나에 추가하고 해당 빌드 액션을 리소스로 설정해야 합니다.어셈블리에 참조를 추가한 후 Notify를 생성할 수 있습니다.다음과 같은 아이콘:

System.Windows.Forms.NotifyIcon icon = new System.Windows.Forms.NotifyIcon();
Stream iconStream = Application.GetResourceStream( new Uri( "pack://application:,,,/YourReferencedAssembly;component/YourPossibleSubFolder/YourResourceFile.ico" )).Stream;
icon.Icon = new System.Drawing.Icon( iconStream );

일반적인 사용 패턴은 알림 아이콘을 기본 창의 아이콘과 동일하게 만드는 것입니다.아이콘은 PNG 파일로 정의됩니다.

이렇게 하려면 프로젝트 리소스에 이미지를 추가한 후 다음과 같이 사용하십시오.

var iconHandle  = MyNamespace.Properties.Resources.MyImage.GetHicon();
this.notifyIcon.Icon = System.Drawing.Icon.FromHandle(iconHandle);

[ XAML ]

<Window x:Class="MyNamespace.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:Seahorse"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="600"
Icon="images\MyImage.png">

resx 스타일의 자원을 사용하고 싶지 않습니다.프로퍼티에서 빌드 액션을 "Resources"로 설정합니다.

다음으로 PACK URI를 사용하여 XAML에서 참조할 수 있습니다."팩://어플리케이션:.../Artwork/Notify.ico"

여기를 참조해 주세요.http://msdn.microsoft.com/en-us/library/aa970069.aspx

조금 더 되고 싶다면...WPF와 마찬가지로 Notify가 있는 CodePlex의 WPF 기여 프로젝트를 조사해야 합니다.XAML에서 작성할 수 있는 아이콘 컨트롤 및 표준 WPF 메뉴를 사용하는 아이콘 컨트롤(메뉴에 「임의」를 붙일 수 있습니다).

간단한 답변만 찾는다면 MyApp이 애플리케이션 이름이고, MyApp이 애플리케이션의 루트 네임스페이스 이름이라고 생각합니다.pack URI 구문을 사용해야 하지만 내장된 리소스에서 아이콘을 꺼내기 위해 그렇게 복잡할 필요는 없습니다.

    <Window x:Class="MyApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Height="100"
    Width="200"
    Icon="pack://application:,,,/MyApp;component/Resources/small_icon.ico">

여기서 프로젝트를 만들고 임베디드 리소스를 사용했습니다(빌드 액션은 리소스가 아닌 임베디드 리소스로 설정되었습니다).이 솔루션은 리소스와 함께 작동하지 않지만 사용자가 조작할 수 있습니다.OnIntialized()에 올려놨는데 꼭 들어가실 필요는 없습니다.

//IconTest = namespace; exclamic.ico = resource 
System.IO.Stream stream = this.GetType().Assembly.GetManifestResourceStream("IconTest.Resources.exclamic.ico");

   if (stream != null)
   {
       //Decode the icon from the stream and set the first frame to the BitmapSource
       BitmapDecoder decoder = IconBitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.None);
       BitmapSource source = decoder.Frames[0];

       //set the source of your image
       image.Source = source;
    }

언급URL : https://stackoverflow.com/questions/74466/how-do-i-use-an-icon-that-is-a-resource-in-wpf

반응형