Il y a un bon code snippet here. Il utilise la méthode Icon.FromHandle
.
À partir du lien:
/// <summary>
/// Converts an image into an icon.
/// </summary>
/// <param name="img">The image that shall become an icon</param>
/// <param name="size">The width and height of the icon. Standard
/// sizes are 16x16, 32x32, 48x48, 64x64.</param>
/// <param name="keepAspectRatio">Whether the image should be squashed into a
/// square or whether whitespace should be put around it.</param>
/// <returns>An icon!!</returns>
private Icon MakeIcon(Image img, int size, bool keepAspectRatio) {
Bitmap square = new Bitmap(size, size); // create new bitmap
Graphics g = Graphics.FromImage(square); // allow drawing to it
int x, y, w, h; // dimensions for new image
if(!keepAspectRatio || img.Height == img.Width) {
// just fill the square
x = y = 0; // set x and y to 0
w = h = size; // set width and height to size
} else {
// work out the aspect ratio
float r = (float)img.Width/(float)img.Height;
// set dimensions accordingly to fit inside size^2 square
if(r > 1) { // w is bigger, so divide h by r
w = size;
h = (int)((float)size/r);
x = 0; y = (size - h)/2; // center the image
} else { // h is bigger, so multiply w by r
w = (int)((float)size * r);
h = size;
y = 0; x = (size - w)/2; // center the image
}
}
// make the image shrink nicely by using HighQualityBicubic mode
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.DrawImage(img, x, y, w, h); // draw image with specified dimensions
g.Flush(); // make sure all drawing operations complete before we get the icon
// following line would work directly on any image, but then
// it wouldn't look as nice.
return Icon.FromHandle(square.GetHicon());
}
Mais si je charge un fichier .ico comme je l'ai indiqué plus haut, je peux accéder au 16x16, 32x32, 48x48, etc. comme ceci -: Icône smallIcon = nouvelle icône (myIcon, 16, 16); – Damien
Parce qu'il sait de quel fichier/ressource l'icône a été créée et peut y revenir et obtenir une nouvelle image. Cependant, il n'y a aucun moyen d'ajouter une image à un objet Icon. –
@JohnKnoeller En fait, ce n'est pas vraiment vrai. Toutes les données d'image sont chargées par la classe 'Icon' en mémoire et lorsque vous redimensionnez à partir d'un autre objet' Icon', les données d'image sont partagées et la taille la plus proche est tirée des données originales (partagées). – NetMage