JD2022-TU1/main/tools/framework/JD.WinFormExtensions/ImageOrIcon.cs

59 lines
1.2 KiB
C#

using System.Drawing;
using JD.Kernel.StaticHelpers;
namespace JD.WinFormExtensions
{
public sealed class ImageOrIcon
{
private Bitmap m_bitmap;
private Icon m_icon;
public ImageOrIcon(Bitmap bitmap)
{
Throw.IfNull(bitmap, "bitmap");
m_bitmap = bitmap;
}
public ImageOrIcon(Icon icon)
{
Throw.IfNull(icon, "icon");
m_icon = icon;
}
public Bitmap Bitmap
{
get
{
if (m_bitmap == null)
{
m_bitmap = m_icon.ToBitmap();
}
return m_bitmap;
}
}
public Icon Icon
{
get
{
if (m_icon == null)
{
m_icon = Icon.FromHandle(m_bitmap.GetHicon());
}
return m_icon;
}
}
public static implicit operator ImageOrIcon(Bitmap bitmap)
{
return new ImageOrIcon(bitmap);
}
public static implicit operator ImageOrIcon(Icon icon)
{
return new ImageOrIcon(icon);
}
}
}