Inoltre in che modo si posso disegnare gli archi? ho provato la funzione draw.circle ma non capisco il significato dei parametri start - end. Qualcuno sa come funzionano?
Immagina un cerchio avente come centro della sua circonferenza il punto di origine delle ascisse e delle ordinate.
I parametri "start angle" e "end angle" sono misurati in radianti. Un angolo pari a 0 pone il parametro sull'asse X positivo. Invece un angolo di radianti π/2.0 (cioè 90 gradi) porrà il parametro sull'asse Y positivo......
...ti faccio un esempio esplicativo, non con la DrawingArea, disegnando all'interno di una Picture vuota (appositamente realizzata nella cartella Dati) da 304 x 304 pixel:
Public Sub Button1_Click()
Dim p As Picture
Dim a As Integer
p = Picture.Load("mia_immagine_vuota.png")
For a = 1 To 360
With Draw
.Begin(p)
' viene disegnato piano-piano un arco iniziando dall'asse X nel 1° quadrante,
' che va incrementando in senso antiorario, ed alla fine si chiude a formare un cerchio:
.Arc(100, 100, 100, 100, Rad(0), Rad(a))
End With
PictureBox1.Picture = p
Wait 0.1
Next
End
...prova (con la tua drawingArea) a vedere quello che succede :coder: , e capirai quello che volevi capire.
Prova anche questa soluzione più specifica per creare un semicerchio:
Public Sub Button1_Click()
Dim p As Picture
Dim a As Integer
p = Picture.Load("mia_immagine_vuota.png")
With Draw
.Begin(p)
' viene disegnato un semicerchio:
.Circle(100, 100, 100, Rad(0), Rad(180))
End With
PictureBox1.Picture = p
End
Niente non riesco proprio a capire... Allora in un form ho inserito una drawArea di dimensioni 400*200. Ho inserito questo codice:
PUBLIC SUB Form_Open()
Draw.Begin(DrawingArea1)
Draw.LineWidth = 1
Draw.Line(100, 0, 100, 200)
DrawingArea1.Refresh
END
La linea me la disegna da circa x80 y0 fino a x80 y130 all'incirca.. ma dove sbaglio? Di quale contenitore parli?
Ok ora cominciano a quadrare un pò di cose :ok: . Ma ritorniamo a noi :)
Con la funzione draw.circle riesco a disegnare un arco ma mi viene visualizzato anche l'angolo, riporto un esempio:
Draw.Begin(DrawingArea1)
Draw.LineWidth = 1
Draw.Circle(100, 100, 50, 0, Pi / 1.5)
DrawingArea1.Refresh
Quello che visualizzo lo si vede in figura. Come faccio a non far visualizzare anche le linee dell' angolo?
Ho l'impressione che è arrivato il momento di passare a gambas3 :) . Ho notato solo una cosa, quando disegno un arco mi ritrovo con il verso dell'angolo invertito rispetto alla precedente versione ma anche rispetto a quanto spiega l'help. Qualcuno può darmi conferma di questo o sono ancora io che ho toppato qualcosa? :hatecomputer:
Allego il codice ovviamente ora lo sto provando con gambas3.
Public Sub Button1_Click()
Paint.Begin(DrawingArea1)
Paint.LineWidth = 2
Paint.MoveTo(0, 0)
Paint.LineTo(400, 200)
Paint.Arc(100, 100, 50, 0, Pi / 2)
Paint.Stroke
Paint.End
End
e immagine