我不知道是否有可能,但也许有人找到了这样做的方法...... 我有一个选项卡控件,我允许用户通过单击按钮添加选项卡。 我想在选项卡上显示一些图标,所以我添加了一个ImageList,但我一次只能显示一个图标,我需要一起显示至少3个图标。 我想过将3个图标放在一起的图像,但是在使用了一些动作之后会显示图标。例如:首先我显示icon_1,如果用户点击了我添加icon_2等的地方... 有人能想出办法吗? 非常感谢你提前...
答案 0 :(得分:0)
没有。这是不可能的。使用标准的WinForms TabControl组件,您只能同时显示一个图像。
此处的解决方案是使用叠加图标。您有一个基本图标,并添加装饰器。这就是Tortoise SVN,例如,
以下代码在C#中构建重叠图像:
private static object mOverlayLock = new object();
public static Image GetOverlayedImage(Image baseImage, Image overlay)
{
Image im = null;
lock (mOverlayLock)
{
try
{
im = baseImage.Clone() as Image;
Graphics g = Graphics.FromImage(im);
g.DrawImage(overlay, 0, 0, im.Width, im.Height);
g.Dispose();
}
catch
{
// log your exception here
}
}
return im;
}
注意:叠加的图像必须与基本图像具有相同的大小。它必须具有透明色,并且叠加图像中的装饰器必须放在正确的位置,例如右下角或右上角。
答案 1 :(得分:0)
我找到了这段代码:
private Bitmap CombineImages(params Image[] images)
{
int width = 0;
for (int i = 0; i < images.Length; i++)
width += images[i].Width + 3;
int height = 0;
for (int i = 0; i < images.Length; i++)
{
if (images[i].Height > height)
height = images[i].Height;
}
int nIndex = 0;
Bitmap fullImage = new Bitmap(width, height);
Graphics g = Graphics.FromImage(fullImage);
g.Clear(SystemColors.AppWorkspace);
foreach (Image img in images)
{
if (nIndex == 0)
{
g.DrawImage(img, new Point(0, 0));
nIndex++;
width = img.Width;
}
else
{
g.DrawImage(img, new Point(width, 0));
width += img.Width;
}
}
return fullImage;
//img3.Save(finalImage, System.Drawing.Imaging.ImageFormat.Jpeg);
//img3.Dispose();
//imageLocation.Image = Image.FromFile(finalImage);
}
来自此链接http://www.codeproject.com/Articles/502249/Combineplusseveralplusimagesplustoplusformplusaplu