wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了wpf – 如何在XAML中的容器(如dll)中获取特定图标?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我可以在XAML中设置图标容器: <Image source="SHell32.dll.ico" /> 但是如何在XAML中设置容器中的图标索引?就像是: <Image source="SHell32.dll,5" /> 或者像: <Image source="SHell32.dll" Index="5" /> 等等… 这就是它的方式:首先是IValueConverter: using Syste
我可以在XAML中设置图标容器:

<Image source="SHell32.dll.ico" />

但是如何在XAML中设置容器中的图标索引?就像是:

<Image source="SHell32.dll,5" />

或者像:

<Image source="SHell32.dll" Index="5" />

等等…

解决方法

这就是它的方式:首先是IValueConverter:

using System;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.Interopservices;
using System.Windows;
using System.Windows.Data;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;

[ValueConversion(typeof(String),typeof(ImagesourcE))]
public class HabeasIcon : IValueConverter
{   
    [DllImport("sHell32.dll")]
    private static extern IntPtr ExtractIcon(IntPtr hInst,String lpszExeFilename,int nIconIndeX);

    public object Convert(object value,Type targetType,object parameter,CultureInfo culturE)
    {
        String[] filename = ((String)parameter).Split('|');

        if (targetType != typeof(ImagesourcE))
            return Binding.DoNothing;

        IntPtr hIcon = ExtractIcon(Process.GetCurrentProcess().Handle,filename[0],int.Parse(filename[1]));

        Imagesource ret = Imaging.CreateBitmapsourceFromHIcon(hIcon,Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());
        return ret;
    }
    public object ConvertBACk(object value,CultureInfo culturE)
    { throw new NotImplementedException(); }
}

XAML:

<Image source="{Binding Converter={Staticresource iconExtractor},ConverterParameter=c:\\Windows\\System32\\sHell32.dll|72}"/>

大佬总结

以上是大佬教程为你收集整理的wpf – 如何在XAML中的容器(如dll)中获取特定图标?全部内容,希望文章能够帮你解决wpf – 如何在XAML中的容器(如dll)中获取特定图标?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。