Stickman problematico

YmirYmir Posts: 183
Per allenarmi, stavo provando a disegnare un uomo stecchino a cui poter almeno muovere braccia e gambe trascinandole col mouse, ma nella form il disegno mi viene fuori tagliato tipo a metà...
Pensavo c'entrasse l'area di clipping e ho provato a modificarla, ma o non si tratta di quello o non ho capito bene come si modifica. Come posso modificare?


open System.Windows.Forms
open System.Drawing

let f = new Form (TopMost = true, Text = "StickMan", BackColor = Color.Black)
f.Show()

type StickMan() =
  inherit UserControl()

  let rect = new Rectangle(Point(80,50), Size(50,50))
  let armL = [|PointF(105.f,115.f); PointF(85.f,170.f) |]
  let armR = [|PointF(105.f,115.f); PointF(125.f,170.f)|]
  let legL = [|PointF(105.f,200.f); PointF(85.f,280.f)|]
  let legR = [|PointF(105.f,200.f); PointF(125.f,280.f)|]
  let r = new Region(Rectangle(Point(0,0),Size(700,700)))

  override this.OnPaint e = 
    let g = e.Graphics
    g.SmoothingMode <- Drawing2D.SmoothingMode.HighQuality
    
    g.FillEllipse(Brushes.White, rect)
    g.DrawLine(Pens.White, Point(105,100), Point(105,200))
    g.DrawLine(Pens.White, armL.[0], armL.[1])
    g.DrawLine(Pens.White, armR.[0], armR.[1])
    g.DrawLine(Pens.White, legL.[0], legL.[1])
    g.DrawLine(Pens.White, legR.[0], legR.[1])

let man = new StickMan()
f.Controls.Add(man)

Comments

  • baababaaba Posts: 23
    edited October 2015
    Forse si potrebbe dire che è colpa del rettangolo di clipping: non imposti le dimensioni del controllo!
    Di default dovrebbero essere tipo 100x100 e per questo viene solo disegnato quello che è contenuto in quest'area ^^
    Comunque per postare codice c'è la modalità (?) codice, che tiene conto dell'indent e ha un font migliore :D

    EDIT:
    Non sono sicurissimo ma dovrebbe esserci un modo per creare un controllo con proprietà "FILL" in maniera che sia grande quanto la finestra che lo ospita
    ALTROEDIT:
    mi sembra un passaggio inutile assegnare lo smoothing dentro la paint. Sono abbastanza sicuro si possa assegnare alla creazione della form o del controllo :o
  • MindFlyerMindFlyer Posts: 436
    Tadaah! T'ho aggiustato l'indentazione.
  • YmirYmir Posts: 183
    MindFlyer wrote: »
    Tadaah! T'ho aggiustato l'indentazione.
    ... e avevo pure guardato tra gli strumenti!
    baaba wrote: »
    Non sono sicurissimo ma dovrebbe esserci un modo per creare un controllo con proprietà "FILL" in maniera che sia grande quanto la finestra che lo ospita
    Avevo dimenticato il Dock per l'appunto -.- e cercavo di fare cose diverse e inutili per sistemare l'area di clipping.
    let man = new StickMan(Dock=DockStyle.Fill)
    

    Grazie :D
Sign In or Register to comment.