#region ================== Namespaces using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; #endregion namespace CodeImp.DoomBuilder.Controls { public class ConfigurablePictureBox : PictureBox { #region ================== Constants private const int BORDER_SIZE = 4; #endregion #region ================== Variables private InterpolationMode interpolationmode = InterpolationMode.NearestNeighbor; private SmoothingMode smoothingmode = SmoothingMode.Default; private CompositingQuality compositingquality = CompositingQuality.Default; private PixelOffsetMode pixeloffsetmode = PixelOffsetMode.None; private GraphicsUnit pageunit = GraphicsUnit.Pixel; private readonly Color highlight = Color.FromArgb(196, SystemColors.Highlight); #endregion #region ================== Properties public InterpolationMode InterpolationMode { get { return interpolationmode; } set { interpolationmode = value; } } public SmoothingMode SmoothingMode { get { return smoothingmode; } set { smoothingmode = value; } } public CompositingQuality CompositingQuality { get { return compositingquality; } set { compositingquality = value; } } public PixelOffsetMode PixelOffsetMode { get { return pixeloffsetmode; } set { pixeloffsetmode = value; } } public GraphicsUnit PageUnit { get { return pageunit; } set { pageunit = value; } } public bool Highlighted { get; set; } #endregion #region ================== Events protected override void OnPaint(PaintEventArgs pe) { pe.Graphics.InterpolationMode = InterpolationMode; pe.Graphics.SmoothingMode = SmoothingMode; pe.Graphics.CompositingQuality = CompositingQuality; pe.Graphics.PageUnit = PageUnit; pe.Graphics.PixelOffsetMode = PixelOffsetMode; base.OnPaint(pe); if(Highlighted) { ControlPaint.DrawBorder(pe.Graphics, DisplayRectangle, highlight, BORDER_SIZE, ButtonBorderStyle.Solid, highlight, BORDER_SIZE, ButtonBorderStyle.Solid, highlight, BORDER_SIZE, ButtonBorderStyle.Solid, highlight, BORDER_SIZE, ButtonBorderStyle.Solid); } } #endregion } }