Сейчас у меня есть форма с PictureBox
на форме. Я использую два частично прозрачных изображения и пытаюсь поставить один поверх другого.Есть ли обходной путь для наложения прозрачных изображений из ресурсов?
- sideMenuWide = скругленный прямоугольник с прозрачным фоном (.png) [Нижнее изображение]
- labelPointer = треугольник с прозрачным фоном (.png) [Лучшие изображения]
Здесь мой подход:
// METHOD #1 //
Image img1 = Image.FromFile(@"C:\sideMenuWide.png");
Image img2 = Image.FromFile(@"C:\labelPointer.png");
picBox.Image = CombineImages(img1, img2);
// METHOD #2 //
Image imgA = RBS.Properties.Resources.sideMenuWide;
Image imgB = RBS.Properties.Resources.labelPointer;
picBox.Image = CombineImages(imgA, imgB);
И функция CombineImage: (Я не писал е эта функция, только модифицированный)
public static Bitmap CombineImages(Image imgA, Image imgB)
{
//a holder for the result (By default, use the first image as the main size)
Bitmap result = new Bitmap(imgA.Size.Width, imgA.Size.Height);
//use a graphics object to draw the resized image into the bitmap
using (Graphics graphics = Graphics.FromImage(result))
{
//set the resize quality modes to high quality
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//draw the images into the target bitmap
graphics.DrawImage(imgA, 0, 0, imgA.Width, imgA.Height);
graphics.DrawImage(imgB, 100, 70, imgB.Width, imgB.Height);
}
return result;
}
Метод # 1 НЕ работает, как я хочу его, отображает imgB отлично на вершине IMGA.
Метод # 2 однако показывает, что imgA просто отлично, но imgB действительно слабый.
Любые идеи о том, как преодолеть это? Я хотел бы иметь возможность сделать это с помощью ресурсов вместо того, чтобы извлекать из файла.
Я думаю, что ваш «новый Bitmap» должен возвращать один с палитрой 32-битным. Я не уверен, что это значение по умолчанию. – Brannon
любой снимок экрана? –