2011-02-07 20 views
5

Quindi ho un modulo senza bordi e ho bisogno che sia ridimensionabile (facendo clic su uno dei 4 lati o sugli angoli). Per chiarire, io voglio che il mio modulo per essere senza confini come le note appiccicose di default in Windows 7.Disegno di una pinza in una forma senza bordi

enter image description here

ho preso a lavorare (in basso a destra solo per ora) utilizzando il codice fornito da Julien Lebosquain su questo post:

Resize borderless window on bottom right corner

Tuttavia, mi piacerebbe davvero per visualizzare l'immagine trascinate la presa nell'angolo in basso a destra. Nel suo post, Julien menzionato questo per quanto riguarda la pinza:

è possibile inizializzare una nuova
VisualStyleRenderer (VisualStyleElement.Status.Gripper.Normal) e
usare il suo metodo PaintBackground().

Non sono sicuro di come procedere nel mio modulo. Qualcuno può indicarmi la giusta direzione?

Grazie.

+0

Cosa vuoi, deve essere trascinato da 4 angoli e 4 anche lateralmente o solo da 4 angoli? –

+0

4 angoli e 4 lati. Tuttavia, la mia priorità immediata è di mostrare l'immagine della pinza nell'angolo in basso a destra per mostrare che il mio modulo è ridimensionabile. – Vaheh

risposta

7

Così dopo aver letto su di esso un po 'qui: http://msdn.microsoft.com/en-us/library/system.windows.forms.visualstyles.visualstyleelement.status.gripper.normal.aspx, ho la soluzione.

Per prima cosa ignorare l'evento OnPaint() per il modulo.

protected override void OnPaint(PaintEventArgs e) { 
     base.OnPaint(e); 
     DrawGripper(e); 
    } 

E il metodo che fa il disegno.

public void DrawGripper(PaintEventArgs e) { 
     if (VisualStyleRenderer.IsElementDefined(
      VisualStyleElement.Status.Gripper.Normal)) { 
      VisualStyleRenderer renderer = new VisualStyleRenderer(VisualStyleElement.Status.Gripper.Normal); 
      Rectangle rectangle1 = new Rectangle((Width) - 18, (Height) - 20, 20, 20); 
      renderer.DrawBackground(e.Graphics, rectangle1); 
     } 
    } 
+0

+1, ok, per chiarire usa 'Invalidate();' in 'DrawGripper();' –