Add layerimage overload

transparency=1 is no opacity change
remove Rectangle use, just provide coordinates (looks to be simpler in
the .net src too)
This commit is contained in:
Kurt 2018-07-14 18:43:46 -07:00
parent cb80c02011
commit fae36e2086
6 changed files with 18 additions and 12 deletions

View File

@ -54,7 +54,7 @@ public void MouseEnter(object sender, EventArgs e)
if (pb.Image == null)
return;
OriginalBackground = pb.BackgroundImage;
pb.BackgroundImage = CurrentBackground = pb.BackgroundImage == null ? Resources.slotHover : ImageUtil.LayerImage(pb.BackgroundImage, Resources.slotHover, 0, 0, 1);
pb.BackgroundImage = CurrentBackground = pb.BackgroundImage == null ? Resources.slotHover : ImageUtil.LayerImage(pb.BackgroundImage, Resources.slotHover, 0, 0);
BeginHoverSlot(pb);
}
private void BeginHoverSlot(PictureBox pb)

View File

@ -979,7 +979,7 @@ private void ExportQRFromTabs()
if (la.Parsed && pkx.Species != 0)
{
var img = la.Valid ? Resources.valid : Resources.warn;
sprite = ImageUtil.LayerImage(sprite, img, 24, 0, 1);
sprite = ImageUtil.LayerImage(sprite, img, 24, 0);
}
string[] r = pkx.QRText;

View File

@ -53,7 +53,7 @@ private void RefreshImage()
gfx.DrawImage(icon, preview.Width / 2 - icon.Width / 2, preview.Height / 2 - icon.Height / 2);
}
// Layer on Preview Image
Image pic = ImageUtil.LayerImage(qr, preview, qr.Width / 2 - preview.Width / 2, qr.Height / 2 - preview.Height / 2, 1);
Image pic = ImageUtil.LayerImage(qr, preview, qr.Width / 2 - preview.Width / 2, qr.Height / 2 - preview.Height / 2);
Image newpic = new Bitmap(PB_QR.Width, PB_QR.Height);
using (Graphics g = Graphics.FromImage(newpic))

View File

@ -8,16 +8,22 @@ namespace PKHeX.WinForms
public static class ImageUtil
{
// Image Layering/Blending Utility
public static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y, double trans)
public static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y, double transparency)
{
if (baseLayer == null)
return overLayer as Bitmap;
overLayer = ChangeOpacity(overLayer, transparency);
return LayerImage(baseLayer, overLayer, x, y);
}
public static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y)
{
if (baseLayer == null)
return overLayer as Bitmap;
Bitmap img = new Bitmap(baseLayer.Width, baseLayer.Height);
using (Graphics gr = Graphics.FromImage(img))
{
gr.DrawImage(baseLayer, new Rectangle(0, 0, baseLayer.Width, baseLayer.Height));
Image o = trans == 1f ? overLayer : ChangeOpacity(overLayer, trans);
gr.DrawImage(o, new Rectangle(x, y, overLayer.Width, overLayer.Height));
gr.DrawImage(baseLayer, 0, 0);
gr.DrawImage(overLayer, x, y);
}
return img;
}

View File

@ -85,14 +85,14 @@ private static Image GetSprite(PKM pkm, SaveFile SAV, int box, int slot, bool fl
pkm.Box = box;
var la = new LegalityAnalysis(pkm, SAV.Personal);
if (!la.Valid && pkm.Species != 0)
sprite = ImageUtil.LayerImage(sprite, Resources.warn, 0, 14, 1);
sprite = ImageUtil.LayerImage(sprite, Resources.warn, 0, 14);
}
if (inBox) // in box
{
if (SAV.IsSlotLocked(box, slot))
sprite = ImageUtil.LayerImage(sprite, Resources.locked, 26, 0, 1);
sprite = ImageUtil.LayerImage(sprite, Resources.locked, 26, 0);
else if (SAV.IsSlotInBattleTeam(box, slot))
sprite = ImageUtil.LayerImage(sprite, Resources.team, 21, 0, 1);
sprite = ImageUtil.LayerImage(sprite, Resources.team, 21, 0);
}
return sprite;

View File

@ -98,7 +98,7 @@ private static Image LayerOverImageItem(Image baseImage, int item, int generatio
if (x + itemimg.Width > baseImage.Width)
x = baseImage.Width - itemimg.Width;
int y = 15 + (15 - itemimg.Height);
return ImageUtil.LayerImage(baseImage, itemimg, x, y, 1);
return ImageUtil.LayerImage(baseImage, itemimg, x, y);
}
private static Image LayerOverImageShiny(Image baseImage, bool isBoxBGRed)
@ -115,7 +115,7 @@ private static Image LayerOverImageEgg(Image baseImage, int species)
baseImage = ImageUtil.ChangeOpacity(baseImage, 0.33);
// Add the egg layer over-top with full opacity.
var egg = species == 490 ? (Image)Resources.ResourceManager.GetObject("_490_e") : Resources.egg;
return ImageUtil.LayerImage(baseImage, egg, 0, 0, 1);
return ImageUtil.LayerImage(baseImage, egg, 0, 0);
}
}
}