Disegnare in una DrawingArea sulla base dei punti cliccati un parallelogramma con angoli retti
Da Gambas-it.org - Wikipedia.
Cliccando almeno due volte all'interno di una DrawingArea, si disegnerà un rettangolo o un quadrato ( a seconda dei casi), che sarà definito nella sua posizione in base al punto con i valori X e Y inferiori, e nella sua dimensioni con i predetti valori, ma superiori.
Mostriamo un possibile codice:
Private DrawingArea1 As DrawingArea Private Button1 As Button Private xx As New Short[] Private yy As New Short[] Private bo As Boolean Public Sub Form_Open() With Me .W = Screen.AvailableWidth * 0.5 .H = Screen.AvailableHeight * 0.5 End With With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" .X = 0 .Y = 0 .W = Me.W .H = Me.H * 0.8 .Background = Color.SoftYellow End With With Button1 = New Button(Me) As "Button1" .W = Me.W * 0.15 .H = Me.H * 0.15 .X = (Me.W / 2) - (.W / 2) .Y = Me.H - .H End With End Public Sub DrawingArea1_MouseUp() xx.Push(Mouse.X) yy.Push(Mouse.Y) End Public Sub Button1_Click() bo = True DrawingArea1.Refresh End Public Sub DrawingArea1_Draw() If Not bo Then Return Dim a, b, c As Short With Paint For c = 0 To xx.Max .Arc(xx[c], yy[c], 2, Rad(0), Rad(360), False) .Fill Next a = xx.Sort(gb.Ascent)[0] b = yy.Sort(gb.Ascent)[0] .DrawRect(xx.Sort(gb.Ascent)[0], yy.Sort(gb.Ascent)[0], xx.Sort(gb.Descent)[0] - a, yy.Sort(gb.Descent)[0] - b, Color.Red) .Stroke .End End With xx.Clear yy.Clear End