zoukankan      html  css  js  c++  java
  • C# ICON

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Bright.HIS.Data
    {
        public class Icon
        {
            #region Win32 API

            [System.Runtime.InteropServices.DllImport("shell32.dll", EntryPoint = "ExtractAssociatedIcon")]
            private static extern IntPtr ExtractAssociatedIconA(IntPtr hInst,[System.Runtime.InteropServices.MarshalAs(
       System.Runtime.InteropServices.UnmanagedType.LPStr)] string lpIconPath,ref int lpiIcon);

            [System.Runtime.InteropServices.DllImport("shell32.dll", EntryPoint = "ExtractIcon")]
            private static extern IntPtr ExtractIconA(IntPtr hInst,[System.Runtime.InteropServices.MarshalAs(
                     System.Runtime.InteropServices.UnmanagedType.LPStr)] string lpszExeFileName,int nIconIndex);

            private static IntPtr hInst;

            #endregion

            #region ICON

            public static System.Drawing.Icon ExtractIcon(string fileName, int index)
            {
                if (System.IO.File.Exists(fileName) || System.IO.Directory.Exists(fileName))
                {
                    System.IntPtr hIcon;

                    hIcon = ExtractIconA(hInst, fileName, -1);

                    if (hIcon.Equals(IntPtr.Zero))
                    {
                        return ExtractAssociatedIcon(fileName);
                    }
                    else
                    {
                        int numOfIcons = hIcon.ToInt32();

                        if (0 <= index && index < numOfIcons)
                        {
                            hIcon = ExtractIconA(hInst, fileName, index);

                            if (!hIcon.Equals(IntPtr.Zero))
                            {
                                return System.Drawing.Icon.FromHandle(hIcon);
                            }
                            else
                            {
                                return null;
                            }
                        }
                        else
                        {
                            return null;
                        }
                    }
                }
                else
                {
                    return null;
                }
            }

            public static System.Drawing.Icon ExtractAssociatedIcon(string fileName)
            {
                if (System.IO.File.Exists(fileName) || System.IO.Directory.Exists(fileName))
                {
                    int i = 0;

                    IntPtr hIcon = ExtractAssociatedIconA(hInst, fileName, ref i);

                    if (!hIcon.Equals(IntPtr.Zero))
                    {
                        return System.Drawing.Icon.FromHandle(hIcon);
                    }
                    else
                    {
                        return null;
                    }
                }
                else
                {
                    return null;
                }
            }

            public static System.Drawing.Image GetIconFromFile(string aFilePath)
            {
                System.Drawing.Icon img = UICommon.Icon.ExtractIcon(aFilePath.ToString(), 0);
                return img.ToBitmap();
            }

            public static System.Drawing.Image GetIconByMemoryStream(string aFilePath)
            {
                System.Drawing.Image img = new System.Drawing.Bitmap(aFilePath.ToString());
                System.IO.MemoryStream mStream = new System.IO.MemoryStream();
                img.Save(mStream, System.Drawing.Imaging.ImageFormat.Png);
                System.Drawing.Image IconShow = System.Drawing.Image.FromStream(mStream);
                mStream.Close();
                img.Dispose();
                return IconShow;
            }

            public static System.Drawing.Image GetImgFromPic(string aFilePath)
            {
                System.Drawing.Image img = new System.Drawing.Bitmap(aFilePath.ToString());
                return img;
            }

            public static System.Drawing.Icon GetIconFromPic(string aFilePath)
            {
                System.Drawing.Image img = new System.Drawing.Bitmap(aFilePath.ToString());
                System.IO.MemoryStream mStream = new System.IO.MemoryStream();
                img.Save(mStream, System.Drawing.Imaging.ImageFormat.Gif);
                System.Drawing.Icon IconShow = System.Drawing.Icon.FromHandle(new System.Drawing.Bitmap(mStream).GetHicon());
                mStream.Close();
                img.Dispose();
                return IconShow;
            }
            #endregion
        }
    }

  • 相关阅读:
    WriteFile函数
    良好的动态内存申请与释放
    只需一条命令,快速在Windows 10上关闭Linux
    盘点程序员过年最怕被问的问题:薪资问题首当其冲,对象问题紧追其后
    程序员为什么是吃青春饭,而不是像医生律师一样越老越值钱?
    Linux网络配置的三种方法,手把手教你,一看就会!
    应届程序员VS往届程序员:当面对HR和领导时,此时的内心活动是这样的...
    MySql数据在磁盘上到底是怎么存储的?被存储的数据怎么查找?
    如何写出高质量的代码?优秀的程序员都是这样做的
    哼!MySQL 8.0不讲武德,给我挖坑!
  • 原文地址:https://www.cnblogs.com/WandererNet/p/2435978.html
Copyright © 2011-2022 走看看