2016-01-03 14 views
5

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); 
     } 
    } 
} 

risposta

6

check if (this.DesignMode) nel vostro OnPaint e chiamare DrawRectangle.

Si consiglia di utilizzare un new Pen(SystemColors.ActiveBorder) { DashStyle = DashStyle.Dot }

Problemi correlati