WPF에서 리소스 인 아이콘을 어떻게 사용합니까?
리소스로 포함 된 .ico 파일이 있습니다 (빌드 작업이 리소스로 설정 됨). NotifyIcon을 만들려고합니다. 내 아이콘을 어떻게 참조 할 수 있습니까?
notifyIcon = new NotifyIcon();
notifyIcon.Icon = ?? // my icon file is called MyIcon.ico and is embedded
아이콘 파일을 프로젝트 어셈블리 중 하나에 추가하고 해당 빌드 작업을 리소스로 설정해야합니다. 어셈블리에 대한 참조를 추가 한 후 다음과 같이 NotifyIcon을 만들 수 있습니다.
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 스타일 리소스를 사용하고 싶지는 않습니다. 프로젝트의 ico 파일을 폴더 ( "ArtWork"라고 함)에 붙이고 속성에서 Build Action을 "Resources"로 설정하기 만하면됩니다.
그런 다음 PACK URI를 사용하여 XAML에서 참조 할 수 있습니다 ... "pack : // application : ,,, / Artwork / Notify.ico"
여기 참조 : http://msdn.microsoft.com/en-us/library/aa970069.aspx 및 샘플
좀 더 WPF와 같은 사람이되고 싶다면 XAML로 만들 수있는 NotifyIcon 컨트롤이 있고 표준 WPF 메뉴를 사용하는 CodePlex 의 WPF Contrib 프로젝트를 살펴 봐야 합니다. "메뉴).
간단한 대답을 찾고 있다면 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">
여기서 프로젝트를 만들고 포함 된 리소스를 사용했습니다 (빌드 작업이 리소스가 아닌 포함 된 리소스로 설정 됨). 이 솔루션은 Resource에서 작동하지 않지만 조작 할 수 있습니다. 나는 이것을 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
'development' 카테고리의 다른 글
내 httpd.conf가 비어 있습니다. (0) | 2020.11.17 |
---|---|
epplus C #을 사용하여 Excel 시트 셀의 사용자 지정 BackgroundColor 설정 (0) | 2020.11.17 |
Emacs에서 쉘 명령을 통해 텍스트 필터링 (0) | 2020.11.17 |
고유 ID가있는 중복 된 '시뮬레이터'를 보여주는 Xcode 6.4 (0) | 2020.11.16 |
Django "하위 행을 추가하거나 업데이트 할 수 없습니다 : 외래 키 제약 조건이 실패했습니다" (0) | 2020.11.16 |