public bool pointOverAny(Point p, out c_ImageHolder overImg) { overImg = null; Limages.Sort(new intComparerDesc()); foreach (c_ImageHolder c in Limages) { if (pointInPosition(p, c.bounds())) { overImg = c; return(true); } } return(false); }
public Bitmap renderButtons(Point p, c_ImageHolder c) { Point newp = new Point(p.X - c.Left, p.Y - c.Top); Bitmap ret = new Bitmap(c.Width, panelHeight); using (Graphics g = Graphics.FromImage(ret)) { foreach (CustomPanelButton b in c._buttons.btns) { if (b.visible) { if (b.Anchor == CustomPanelButton.Anchors.left) { if (c.isOverButton(newp, b)) { g.DrawImage(b.Image2, new Point(b.Pos * b.Size + (b.Pos > 1 ? b.Pos + 1 : 0) - b.PadRight + (b.Pos > 0 ? (b.Pos * 2) : 0), b.PadTop)); } else { g.DrawImage(b.Image1, new Point(b.Pos * b.Size + (b.Pos > 1 ? b.Pos + 1 : 0) - b.PadRight + (b.Pos > 0 ? (b.Pos * 2) : 0), b.PadTop)); } g.DrawRectangle(Pens.Black, new Rectangle(b.Pos * c.buttonSize + (b.Pos > 0 ? (b.Pos * 2) : 0), 0, c.buttonSize, c.buttonSize)); } else { if (c.isOverButton(newp, b)) { g.DrawImage(b.Image2, new Point(c.Width - (((b.Pos + 1) * b.Size + 7) - b.PadRight + (b.Pos * 2)), b.PadTop)); } else { g.DrawImage(b.Image1, new Point(c.Width - (((b.Pos + 1) * b.Size + 7) - b.PadRight + (b.Pos * 2)), b.PadTop)); } g.DrawRectangle(Pens.Black, new Rectangle(c.Width - (((b.Pos + 1) * c.buttonSize) + (b.Pos * 2)), 0, c.buttonSize, c.buttonSize)); } } } return(ret); } }
//DrawTBG => Draw with Transparent Background checkered pattern public static Bitmap createImage(System.Drawing.Rectangle rec, List <c_ImageHolder> cutouts, bool drawTBG) { int border = 0; if (Properties.Settings.Default.s_hasBorder) { border = Properties.Settings.Default.s_borderWidth; } Bitmap bm = null; try { bm = new Bitmap(rec.Width + (border * 2), rec.Height + (border * 2)); using (Graphics g = Graphics.FromImage(bm)) { c_returnGraphicSettings cg = new c_returnGraphicSettings(); g.SmoothingMode = cg.getSM(); g.InterpolationMode = cg.getIM(); g.PixelOffsetMode = cg.getPOM(); //g.Clear(Color.Transparent); if (Properties.Settings.Default.s_hasBgColor) { g.Clear(Properties.Settings.Default.s_bgColor); } else { g.Clear(Color.Transparent); } if (drawTBG) { int x = 0; int y = 0; while (y < bm.Height) { while (x < bm.Width) { g.DrawImageUnscaled(Properties.Resources.transparentBG, new Point(x, y)); x += Properties.Resources.transparentBG.Width; } y += Properties.Resources.transparentBG.Height; x = 0; } } foreach (c_ImageHolder c in cutouts) { c_ImageHolder k = c; g.DrawImage(k.Image, new System.Drawing.Rectangle(k.Left - rec.Left + border, k.Top - rec.Top + border, k.Width, k.Height), new System.Drawing.Rectangle(0, 0, k.Image.Width, k.Image.Height), GraphicsUnit.Pixel); } if (Properties.Settings.Default.s_hasBorder) { Brush b = new SolidBrush(Properties.Settings.Default.s_borderColor); g.FillRectangle(b, new RectangleF(0, 0, bm.Width, border)); g.FillRectangle(b, new RectangleF(0, bm.Height - border, bm.Width, border)); g.FillRectangle(b, new RectangleF(0, 0, border, bm.Height)); g.FillRectangle(b, new RectangleF(bm.Width - border, 0, border, bm.Height)); } } } catch { } return(bm); }