Le immagini trasparenti sono il male puro in Windows Form, ecco perché ho creato una classe di controllo personalizzata per gestirle. Il designer non mostra il mio controllo quando è vuoto. Vorrei aggiungere un bordo sottile, ma solo nella vista disegno (e quando nessun utente viene aggiunto dall'utente). Come lo farei?Come aggiungere un bordo ad un controllo personalizzato nella vista disegno?
La mia classe è:
class TransparentImage : Control
{
public Image Image { get; set; }
protected Graphics graphics;
public string FilePath { get; set; }
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
return cp;
}
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
// Don't paint background
}
protected override void OnPaint(PaintEventArgs e)
{
// Update the private member so we can use it in the OnDraw method
this.graphics = e.Graphics;
// Set the best settings possible (quality-wise)
this.graphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.AntiAlias;
this.graphics.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
this.graphics.PixelOffsetMode =
System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
this.graphics.SmoothingMode =
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
if (Image != null)
{
// Sets the images' sizes and positions
var width = Image.Size.Width;
var height = Image.Size.Height;
var size = new Rectangle(0, 0, width, height);
// Draws the two images
this.graphics.DrawImage(Image, size);
}
}
}