Icon chatIcon = Properties.Resources.Chat;
public
class
ResourceItem
{
/// <summary>
/// Resource name
/// </summary>
string
Name {
get
;
set
; }
/// Image which is either an icon or bitmap
Bitmap Image {
/// Indicates if dealing with an icon so when displaying the
/// control used to display can adjust it's size or Size mode
bool
IsIcon {
override
ToString() => Name;
}
namespace
ChangeImage.Classes
/// Read images from current project resources
ImageHelper
/// Get all bitmap and icon resources
/// <returns></returns>
static
List<ResourceItem> ResourceItemList()
var items =
new
List<ResourceItem>();
foreach
(var name
in
ResourceImageNames())
/*
* For this code sample ignore the default image
*/
if
(name ==
"ready"
)
continue
var item =
ResourceItem() {Name = name, IsIcon =
false
};
(Resources.ResourceManager.GetObject(name)
is
Icon)
item.Image = ((Icon)Resources.ResourceManager.GetObject(name))?.ToBitmap();
item.IsIcon =
true
else
item.Image = (Bitmap)Resources.ResourceManager.GetObject(name);
items.Add(item);
return
items;
/// Get all resource names for icon and bitmaps
List<
> ResourceImageNames()
try
var names =
>();
var resourceSet = Resources
.ResourceManager
.GetResourceSet(CultureInfo.CurrentUICulture,
,
);
names.AddRange(
from DictionaryEntry dictionaryEntry
resourceSet
where dictionaryEntry.Value
Image || dictionaryEntry.Value
Icon
select dictionaryEntry.Key.ToString());
names;
catch
(Exception)
null
/// Provides access to resource images by loading them once
sealed
ResourceImages
private
readonly
Lazy<ResourceImages> Lazy =
Lazy<ResourceImages>(() =>
ResourceImages());
ResourceImages Instance => Lazy.Value;
List<ResourceItem> _images;
/// Get all icon and bitmap images from project resources
/// <returns>list of images</returns>
List<ResourceItem> Images() => _images ??= ImageHelper.ResourceItemList();
ChangeImage.Extensions
ResourceItemExtensions
/// Return resources of type Icon
/// <param name="sender"></param>
/// <returns>list of icons or an empty list</returns>
List<ResourceItem> Icons(
this
List<ResourceItem> sender) =>
sender.Where(item => item.IsIcon).ToList();
/// Return resources of type Bitmap
/// <returns>list of bitmaps or an empty list</returns>
List<ResourceItem> BitMaps(
sender.Where(item => !item.IsIcon).ToList();
using
System;
System.Windows.Forms;
ChangeImage.Classes;
ChangeImage.Extensions;
ChangeImage
partial
MainForm : Form
MainForm()
InitializeComponent();
Shown += OnShown;
void
OnShown(
object
? sender, EventArgs e)
var allImages = ResourceImages.Instance.Images();
* Do we have images from resources?
(allImages
MessageBox.Show(
"No images located"
SelectFromAllImagesButton.Enabled =
AllImagesListBox.DataSource = allImages;
ChangeFromAllImage();
IconListBox.DataSource = allImages.Icons();
BitmapListBox.DataSource = allImages.BitMaps();
SelectFromAllImagesButton_Click(
sender, EventArgs e)
ChangeFromAllImage()
(AllImagesListBox.SelectedIndex <= -1)
var item = (ResourceItem) AllImagesListBox.SelectedItem;
pictureBox1.SizeMode = item.IsIcon ? PictureBoxSizeMode.Normal : PictureBoxSizeMode.Zoom;
pictureBox1.Image = item.Image;