19/05/2023: A causa di un errore sono stati cancellati, insieme ad account creati da bot, alcuni account legittimi. Si prega di leggere qui: https://www.gambas-it.org/smf/index.php?topic=9733.0
Vietato proporre porcherie con Shell !
... Editto imperiale
Public Sub Form_Open() Dim im, i As Image Dim b As Byte = 97 Dim x, y, x_a, y_o, r, an As Short With Me .Center .W = 400 .H = 400 End With x_a = 200 ' Rappresenta la distanza X dal punto 0 (angolo in alto a sinistra) dell'immagine principale y_o = 200 ' Rappresenta la distanza Y dal punto 0 (angolo in alto a sinistra) dell'immagine principale r = 100 ' Rappresenta la lunghezza del raggio (la distanza di ogni immagine-lettera dal centro) ' Crea l'Oggetto "Image" principale, ove saranno mostrate tutte le lettere alfabetiche: im = New Image(Me.W, Me.H, Color.White, gb.Standard) For an = 180 To 360 Step 7 ' Rappresenta l'angolo dell'arco (ci si sposta di 7° in senso orario lungo l'arco) ' Crea un oggetto "Image" per contenere il disegno di una lettera alfabetica: i = New Image(20, 25, Color.Transparent, gb.Standard) With Paint .Begin(i) .Font.Size = 12 .Text(Chr(b), 1, 1, i.W, i.H, Align.Center) .Stroke .End End With i = i.Rotate(Rad(an + 90)) x = x_a + r * Cos(Rad(an)) y = y_o + r * Sin(Rad(an)) With Paint .Begin(im) .DrawImage(i, x, y, i.W, i.H) .End End With Inc b Next With PictureBox1 .X = 0 .Y = 0 .W = Me.W .H = Me.H .Image = im End WithEnd
Public Sub Form_Open() Dim im, i As Image Dim b As Byte Dim x, y, x_a, y_o, r As Short Dim an As Float Dim cl As Integer Dim bb As New Byte[] Dim fo As Font Dim s As String With Me .Center .W = 600 .H = 600 End With x_a = 260 ' Rappresenta la distanza X dal punto 0 (angolo in alto a sinistra) dell'Image principale y_o = 260 ' Rappresenta la distanza Y dal punto 0 (angolo in alto a sinistra) dell'Image principale r = 150 ' Rappresenta la lunghezza del raggio (la distanza di ogni immagine-lettera dal centro) ' Impone il testo da disegnare.' Carica ogni carattere del testo In un vettore Byte[] per poter estrarre di ciascuno il valore: bb = bb.FromString("È lì giù che saprò se vivrà.") ' Imposta il colore di partenza: cl = Color.Blue' Imposta il punto (sulla base dei gradi) della circonferenza da dove cominciare (in senso orario) a disegnare le lettere: an += 204.0 ' Crea l'Oggetto "Image" principale, ove saranno mostrate tutte le lettere alfabetiche del testo: im = New Image(Me.W, Me.H, Color.White, gb.Standard) For b = 0 To bb.Max ' Verifica se il carattere è accentato: If bb[b] > 127 Then' Se è un carattere accentato, per riottenerlo nell'Image, combina i due valori che lo compongono: s = Chr(bb[b]) & Chr(bb[b + 1]) Inc b Else s = Chr(bb[b]) Endif ' Definisce le dimensioni dell'immagine, che conterrà la lettera alfabetica, dalle specificità del carattere: With fo = New Font .Name = "FreeSans" .Size = 18' Crea un oggetto "Image" per contenere il disegno di una lettera alfabetica: i = New Image(.TextWidth(s) + 4, .TextHeight(s) + 4, Color.Transparent, gb.Standard) End With With Paint .Begin(i) .Font.Size = 18 .Font.Name = "FreeSans" .Brush = .Color(cl) .Text(s, 1, 1, i.W, i.H, Align.Center) .Fill .End End With i = i.Rotate(Rad(an + 90)) x = x_a + r * Cos(Rad(an)) y = y_o + r * Sin(Rad(an)) With Paint .Begin(im) .DrawImage(i, x, y, i.W, i.H) .End End With' Imposta la distanza dei caratteri fra essi: an += 5.0 cl += 668457 Next With PictureBox1 .X = 0 .Y = 0 .W = Me.W .H = Me.H .Image = im End WithEnd