Differenze tra le versioni di "Mostrare e usare in Gambas i simboli musicali forniti dal sistema UNICODE"

Da Gambas-it.org - Wikipedia.
 
(12 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
  
 
Tali simboli possono essere consultati mediante l'applicazione "Tabella dei caratteri" fornita dal sistema operativo.
 
Tali simboli possono essere consultati mediante l'applicazione "Tabella dei caratteri" fornita dal sistema operativo.
<BR>Possiamo visualizzare con Gambas tale gruppo di caratteri musicali ad esempio usando il seguente codice (sarà sufficiente posizionarsi sul riquadro giallo della ''PictureBox'' e ruotare la rotellina del mouse per far scorrere i siboli musicali forniti dal UNICODE).
+
<BR>Possiamo visualizzare con Gambas tale gruppo di caratteri musicali, ad esempio, usando il seguente codice (sarà sufficiente posizionarsi sul riquadro giallo della ''PictureBox'' e ruotare la rotellina del mouse per far scorrere i siboli musicali forniti dal UNICODE).
 
<BR>Come è noto <SUP>&#091;[[#Note|nota 1]]&#093;</sup>, in Gambas i caratteri UNICODE possono essere utilizzati attraverso il Metodo ".Chr()" della Classe ''String''.
 
<BR>Come è noto <SUP>&#091;[[#Note|nota 1]]&#093;</sup>, in Gambas i caratteri UNICODE possono essere utilizzati attraverso il Metodo ".Chr()" della Classe ''String''.
 +
Private PictureBox1 As PictureBox
 
  Private i As Integer = &1D100
 
  Private i As Integer = &1D100
 
   
 
   
Riga 9: Riga 10:
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
   With PictureBox1
+
   With PictureBox1 = New PictureBox(Me) As "PictureBox1"
 +
    .X = 0
 +
    .Y = 0
 
     .W = 80
 
     .W = 80
 
     .H = 90
 
     .H = 90
 
     .Background = Color.SoftYellow
 
     .Background = Color.SoftYellow
   End With  
+
   End With
 +
 +
  Disegna(i)
 
   
 
   
 
  End
 
  End
Riga 20: Riga 25:
 
  Public Sub PictureBox1_MouseWheel()
 
  Public Sub PictureBox1_MouseWheel()
 
   
 
   
  Dim im As New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 
  Dim s As String
 
 
 
 
   i = i + Mouse.Delta
 
   i = i + Mouse.Delta
 
   If i < &1D100 Then i = &1D100
 
   If i < &1D100 Then i = &1D100
 
   If i > &1D1B5 Then i = &1D1B5
 
   If i > &1D1B5 Then i = &1D1B5
  <FONT Color=gray>' ''Il carattere UNICODE in Gambas viene mostrato usando il Metodo ".Chr()" della Classe "String":''</font>
+
   
   s = <FONT Color=#B22222><B>String.Chr</b></font>(i)
+
  Disegna(i)
 +
 
 +
End
 +
 +
 +
Private Procedure Disegna(uc As Integer)
 +
 +
   Dim im As New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 
   
 
   
 
   With Paint
 
   With Paint
 
     .Begin(im)
 
     .Begin(im)
 
     .Font.Size = 28
 
     .Font.Size = 28
     .DrawText(s, 20, 5, im.W, im.H, Align.Normal)
+
<FONT Color=gray>' ''Il carattere UNICODE In Gambas viene mostrato usando il Metodo ".Chr()" della Classe "String":''</font>
 +
     .DrawText(String.Chr(uc), 20, 5, im.W, im.H, Align.Normal)
 
     .End
 
     .End
 
   End With
 
   End With
Riga 43: Riga 53:
 
Come si può notare, delle figure musicali aventi il gambo sono disponibili in UNICODE soltanto quelle con il gambo rivolto verso l'alto (posizionabili sul pentagramma dunque dal LA del secondo spazio in giù).
 
Come si può notare, delle figure musicali aventi il gambo sono disponibili in UNICODE soltanto quelle con il gambo rivolto verso l'alto (posizionabili sul pentagramma dunque dal LA del secondo spazio in giù).
 
<BR>Per ottenere le figure musicali con il gambo rivolto verso il basso, bisognerà ''costruirle'' usando alcuni simboli forniti dallo stesso UNICODE.
 
<BR>Per ottenere le figure musicali con il gambo rivolto verso il basso, bisognerà ''costruirle'' usando alcuni simboli forniti dallo stesso UNICODE.
<BR>Mostriamo un esempio con la figura della ''Croma'':
+
<BR>Mostriamo un esempio con la figura della ''Croma''.
 +
<BR>E' necessario usare un Componente grafico basato sulle '''QT'''.
 +
Private PictureBox1 As PictureBox
 +
 +
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
   With PictureBox1
+
   With PictureBox1 = New PictureBox(Me) As "PictureBox1"
     .W = 30
+
    .X = 0
     .H = 60
+
    .Y = 0
 +
     .W = 20
 +
     .H = 50
 
     .Background = Color.SoftYellow
 
     .Background = Color.SoftYellow
   End With
+
   End With  
 
  Dim im As New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 
 
   
 
   
 +
  Dim fig As New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 
   With Paint
 
   With Paint
     .Begin(im)
+
     .Begin(fig)
 
     .Font.Size = 28
 
     .Font.Size = 28
 +
    .Font.Name = "Ubuntu"
 
     .Brush = .Color(Color.Blue)
 
     .Brush = .Color(Color.Blue)
 +
<FONT Color=gray>' ''Ruota il disegno della figura musicale:''</font>
 +
    .Rotate(Rad(180))
 +
    .Translate(-10, -20)
 
  <FONT Color=gray>' ''Disegna nell'Oggetto "Image" il carattere-simbolo della "Semiminima":''</font>
 
  <FONT Color=gray>' ''Disegna nell'Oggetto "Image" il carattere-simbolo della "Semiminima":''</font>
     .DrawText(<FONT Color=#B22222>String.Chr</font>(&1D15F), 10, 20, 0, 0, Align.TopLeft)
+
     .DrawText(String.Chr(&1D15F), 0, 0, 0, 0, Align.Center)
 
     .End
 
     .End
 
   End With
 
   End With
  <FONT Color=gray>' ''Ribalta orizzontalmente il disegno della figura musicale:''</font>
+
   
   im = im.Mirror(True, False)
+
   Dim coda As New Image(fig.W, fig.H, Color.Transparent, Image.Standard)
 
   With Paint
 
   With Paint
     .Begin(im)
+
     .Begin(coda)
 
     .Font.Size = 28
 
     .Font.Size = 28
 +
    .Font.Name = "Ubuntu"
 
     .Brush = .Color(Color.Blue)
 
     .Brush = .Color(Color.Blue)
  <FONT Color=gray>' ''Al disegno della "Semiminima ribaltata aggiunge il carattere-simbolo della coda della "Croma":''</font>
+
  <FONT Color=gray>' ''Disegna il carattere-simbolo della "coda" della Croma:''</font>
     .DrawText(<FONT Color=#B22222>String.Chr</font>(&1D16E), 7, 18, 0, 0, Align.TopLeft)
+
     .DrawText(String.Chr(&1D16E), 4, 6, 0, 0, Align.TopLeft)
 
     .End
 
     .End
 
   End With
 
   End With
  <FONT Color=gray>' ''Ribalta verticalmente il disegno sinora ottenuto:''</font>
+
  <FONT Color=gray>' ''Ribalta verticalmente il disegno della "coda" sinora ottenuto:''</font>
   im = im.Mirror(False, True)
+
   coda = coda.Mirror(False, True)
 +
 +
<FONT Color=gray>' ''Aggiunge il disegno della "coda" a quello della figura musicale di base:''</font>
 +
  fig.PaintImage(coda, 0, 0, coda.W, coda.H)
 
   
 
   
   PictureBox1.Image = im
+
   PictureBox1.Image = fig
 
   
 
   
 
  End
 
  End
Riga 82: Riga 105:
 
In quest'altro esempio all'interno di una ''PictureBox'' di dimensioni di un foglio A4 mostreremo dodici pentagrammi musicali.
 
In quest'altro esempio all'interno di una ''PictureBox'' di dimensioni di un foglio A4 mostreremo dodici pentagrammi musicali.
 
<BR>Il pentagramma musicale è rappresentato dal simbolo UNICODE "&h1D11A".
 
<BR>Il pentagramma musicale è rappresentato dal simbolo UNICODE "&h1D11A".
<BR>L'esempio consentirà anche di creare un file PDF di quanto mostrato nela ''PictureBox''.
+
<BR>L'esempio consentirà anche di creare un file PDF di quanto mostrato nella ''PictureBox''.
 
  Private ScrollView1 As ScrollView
 
  Private ScrollView1 As ScrollView
 
  Private PictureBox1 As PictureBox
 
  Private PictureBox1 As PictureBox
Riga 90: Riga 113:
 
   
 
   
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
  Dim penta As String = String(27, String.Chr(<FONT Color=#B22222><B>&1d11a</b></font>))
 
  Dim y As Short
 
  Dim b, j, t As Byte
 
 
   
 
   
 
   With Me
 
   With Me
Riga 105: Riga 124:
 
   End With
 
   End With
 
   With PictureBox1 = New PictureBox(ScrollView1)
 
   With PictureBox1 = New PictureBox(ScrollView1)
    .X = 0
+
    .X = 0
    .Y = 0
+
    .Y = 0
 
  <FONT Color=gray>' ''Dimensiona i pixel della "PictureBox" ad un foglio A4 = cm. 21x29,7 a 96 dpi:''</font>
 
  <FONT Color=gray>' ''Dimensiona i pixel della "PictureBox" ad un foglio A4 = cm. 21x29,7 a 96 dpi:''</font>
    .W = 794
+
    .W = 794
    .H = 1123
+
    .H = 1123
    .Border = Border.Plain
+
    .Border = Border.Plain
    .Image = New Image(.W, .H, Color.White, Image.Standard)
+
    .Image = New Image(.W, .H, Color.White, Image.Standard)
 
   End With
 
   End With
 
   With Button1 = New Button(Me) As "Button1"
 
   With Button1 = New Button(Me) As "Button1"
Riga 120: Riga 139:
 
     .Text = "C\nr\ne\na\n\nP\nD\nF"
 
     .Text = "C\nr\ne\na\n\nP\nD\nF"
 
   End With
 
   End With
 
+
 
   With Paint
 
   With Paint
 
     .Begin(PictureBox1.Image)
 
     .Begin(PictureBox1.Image)
 
     .Font.Size = 24
 
     .Font.Size = 24
     For b = 0 To 11
+
    .Font.Name = "Ubuntu"
       If b > 0 Then
+
     For j As Byte = 1 To 12
        y = 78
+
       For b As Byte = 1 To 21
         j = .Font.TextHeight(penta) - 1
+
         .DrawText(String.Chr(&1d11a), 50 + (32 * b), 80 + (80 * j), 0, 0, Align.Center)
        t = 36
+
      Next
      Endif
+
     Next  
      .DrawText(penta, 50, (y * b) + j + (132 - t), .Font.TextWidth(penta), .Font.TextHeight(penta), Align.Center)
 
     Next
 
 
     .End
 
     .End
 
   End With
 
   End With
Riga 144: Riga 161:
 
     .Paper = Printer.A4
 
     .Paper = Printer.A4
 
     .Resolution = Desktop.Resolution
 
     .Resolution = Desktop.Resolution
     '''.OutputFile''' = "/tmp/file.pdf"    <FONT Color=gray>' ''Consente la stampa in un file PDF''</font>
+
     <FONT Color=red>.OutputFile</font> = "/tmp/file.pdf"    <FONT Color=gray>' ''Consente la stampa in un file PDF''</font> <SUP>&#091;[[#Note|nota 2]]&#093;</sup>
 
     .Print
 
     .Print
 
   End With
 
   End With
Riga 154: Riga 171:
 
   
 
   
 
   With Paint   
 
   With Paint   
 +
    .Font.Name = "Ubuntu"
 
     .DrawImage(PictureBox1.Image, 0, 0, PictureBox1.Image.W, PictureBox1.Image.H)   
 
     .DrawImage(PictureBox1.Image, 0, 0, PictureBox1.Image.W, PictureBox1.Image.H)   
 
     .End
 
     .End
Riga 186: Riga 204:
 
     .Begin(PictureBox1.Image)
 
     .Begin(PictureBox1.Image)
 
     .Font.Size = 28
 
     .Font.Size = 28
     .DrawText(String(6, String.Chr(&1d11a)), 10, 100)
+
     .Font.Name = "Ubuntu"
 +
    For b As Byte = 1 To 12
 +
      .DrawText(String.Chr(&1d11a), 10 * b, 66, 0, 0)
 +
    Next
 
     .DrawText(String.Chr(&1d11e), 14, 100)
 
     .DrawText(String.Chr(&1d11e), 14, 100)
 
     .End
 
     .End
Riga 199: Riga 220:
 
   With PictureBox1 = New PictureBox(Me) As "PictureBox1"
 
   With PictureBox1 = New PictureBox(Me) As "PictureBox1"
 
     .X = 10
 
     .X = 10
     .Y = 10
+
     .Y = -20
     .W = 18
+
     .W = 30
     .H = 52
+
     .H = 81
 
   End With
 
   End With
 
   
 
   
Riga 211: Riga 232:
 
  Private Procedure DisegnaFigura()
 
  Private Procedure DisegnaFigura()
 
   
 
   
   If PictureBox1.Y < 64 Then
+
   If PictureBox1.Y < 44 Then
 
     PictureBox1.Image = New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 
     PictureBox1.Image = New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 
     With Paint
 
     With Paint
 
       .Begin(PictureBox1.Image)
 
       .Begin(PictureBox1.Image)
 
       .Font.Size = 28
 
       .Font.Size = 28
       .DrawText(String.Chr(&1D15F), 8, 16, 0, 0, Align.Center)
+
      .Font.Name = "Ubuntu"
 +
       .DrawText(String.Chr(&1D15F), 14, 35, 0, 0, Align.Normal)
 
       .End
 
       .End
 
     End With
 
     End With
Riga 224: Riga 246:
 
       .Begin(PictureBox1.Image)
 
       .Begin(PictureBox1.Image)
 
       .Font.Size = 28
 
       .Font.Size = 28
 +
      .Font.Name = "Ubuntu"
 
  <FONT Color=gray>' ''Al disegno della "Semiminima ribaltata aggiunge il carattere-simbolo della coda della "Croma":''</font>
 
  <FONT Color=gray>' ''Al disegno della "Semiminima ribaltata aggiunge il carattere-simbolo della coda della "Croma":''</font>
       .DrawText(String.Chr(&1D16E), 0, 14, 0, 0, Align.Normal)
+
       .DrawText(String.Chr(&1D16E), 3, 33, 0, 0, Align.Normal)
 
       .End
 
       .End
 
     End With
 
     End With
Riga 235: Riga 258:
 
       .Begin(PictureBox1.Image)
 
       .Begin(PictureBox1.Image)
 
       .Font.Size = 28
 
       .Font.Size = 28
       .DrawText(String.Chr(&1d160), 0, 14, 0, 0, Align.Normal)
+
      .Font.Name = "Ubuntu"
 +
       .DrawText(String.Chr(&1d160), -2, 33, 0, 0, Align.Normal)
 
       .End
 
       .End
 
     End With
 
     End With
Riga 250: Riga 274:
 
   
 
   
 
   DisegnaFigura()
 
   DisegnaFigura()
 +
 +
End
 +
 +
 +
Public Sub PictureBox1_MouseUp()
 +
 +
  CreaPictureBox()
 
   
 
   
 
  End
 
  End
Riga 257: Riga 288:
 
=Note=
 
=Note=
 
[1] Vedere la seguente pagina: [[Uso di Unicode con gli oggetti di testo]].
 
[1] Vedere la seguente pagina: [[Uso di Unicode con gli oggetti di testo]].
 +
 +
[2] Ovviamente per ottenere un file immagine, potremo usare il Metodo ".Save()" della Classe ''Image'', quale Proprietà in questo caso della Classe ''PictureBox'':
 +
Public Sub Button1_Click()
 +
 +
  PictureBox1.Image.Save("/tmp/pentagramma.png", 100)
 +
 +
End

Versione attuale delle 10:07, 4 lug 2024

Il sistema di codifica UNICODE contempla anche una buona parte dei simboli musicali occidentali assegnando a ciascuno di essi un numero univoco che va da U+1D100 a U+1D1B5.

Tali simboli possono essere consultati mediante l'applicazione "Tabella dei caratteri" fornita dal sistema operativo.
Possiamo visualizzare con Gambas tale gruppo di caratteri musicali, ad esempio, usando il seguente codice (sarà sufficiente posizionarsi sul riquadro giallo della PictureBox e ruotare la rotellina del mouse per far scorrere i siboli musicali forniti dal UNICODE).
Come è noto [nota 1], in Gambas i caratteri UNICODE possono essere utilizzati attraverso il Metodo ".Chr()" della Classe String.

Private PictureBox1 As PictureBox
Private i As Integer = &1D100


Public Sub Form_Open()

 With PictureBox1 = New PictureBox(Me) As "PictureBox1"
   .X = 0
   .Y = 0
   .W = 80
   .H = 90
   .Background = Color.SoftYellow
 End With

 Disegna(i)

End


Public Sub PictureBox1_MouseWheel()

 i = i + Mouse.Delta
 If i < &1D100 Then i = &1D100
 If i > &1D1B5 Then i = &1D1B5

 Disegna(i)
 
End


Private Procedure Disegna(uc As Integer)

 Dim im As New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)

 With Paint
   .Begin(im)
   .Font.Size = 28
' Il carattere UNICODE In Gambas viene mostrato usando il Metodo ".Chr()" della Classe "String": 
   .DrawText(String.Chr(uc), 20, 5, im.W, im.H, Align.Normal)
   .End
 End With

 PictureBox1.Image = im

End

Ottenere le figure musicali con il gambo in basso

Come si può notare, delle figure musicali aventi il gambo sono disponibili in UNICODE soltanto quelle con il gambo rivolto verso l'alto (posizionabili sul pentagramma dunque dal LA del secondo spazio in giù).
Per ottenere le figure musicali con il gambo rivolto verso il basso, bisognerà costruirle usando alcuni simboli forniti dallo stesso UNICODE.
Mostriamo un esempio con la figura della Croma.
E' necessario usare un Componente grafico basato sulle QT.

Private PictureBox1 As PictureBox


Public Sub Form_Open()

 With PictureBox1 = New PictureBox(Me) As "PictureBox1"
   .X = 0
   .Y = 0
   .W = 20
   .H = 50
   .Background = Color.SoftYellow
 End With 

 Dim fig As New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
 With Paint
   .Begin(fig)
   .Font.Size = 28
   .Font.Name = "Ubuntu"
   .Brush = .Color(Color.Blue)
' Ruota il disegno della figura musicale:
   .Rotate(Rad(180))
   .Translate(-10, -20)
' Disegna nell'Oggetto "Image" il carattere-simbolo della "Semiminima":
   .DrawText(String.Chr(&1D15F), 0, 0, 0, 0, Align.Center)
   .End
 End With

 Dim coda As New Image(fig.W, fig.H, Color.Transparent, Image.Standard)
 With Paint
   .Begin(coda)
   .Font.Size = 28
   .Font.Name = "Ubuntu"
   .Brush = .Color(Color.Blue)
' Disegna il carattere-simbolo della "coda" della Croma:
   .DrawText(String.Chr(&1D16E), 4, 6, 0, 0, Align.TopLeft)
   .End
 End With
' Ribalta verticalmente il disegno della "coda" sinora ottenuto:
 coda = coda.Mirror(False, True)

' Aggiunge il disegno della "coda" a quello della figura musicale di base:
 fig.PaintImage(coda, 0, 0, coda.W, coda.H)

 PictureBox1.Image = fig

End

Disegnare una pagina A4 contenente dodici pentagrammi

In quest'altro esempio all'interno di una PictureBox di dimensioni di un foglio A4 mostreremo dodici pentagrammi musicali.
Il pentagramma musicale è rappresentato dal simbolo UNICODE "&h1D11A".
L'esempio consentirà anche di creare un file PDF di quanto mostrato nella PictureBox.

Private ScrollView1 As ScrollView
Private PictureBox1 As PictureBox
Private Button1 As Button
Private Printer1 As Printer


Public Sub Form_Open()

 With Me
   .W = Screen.AvailableWidth * 0.65
   .H = Screen.AvailableHeight
 End With
 With ScrollView1 = New ScrollView(Me) As "ScrollView1"
   .W = Me.W
   .H = Me.H
   .ScrollBar = Scroll.Both
 End With
 With PictureBox1 = New PictureBox(ScrollView1)
   .X = 0
   .Y = 0
' Dimensiona i pixel della "PictureBox" ad un foglio A4 = cm. 21x29,7 a 96 dpi:
   .W = 794
   .H = 1123
   .Border = Border.Plain
   .Image = New Image(.W, .H, Color.White, Image.Standard)
 End With
 With Button1 = New Button(Me) As "Button1"
   .X = Me.W * 0.9
   .Y = 100
   .W = Me.W * 0.05
   .H = Me.H * 0.3
   .Text = "C\nr\ne\na\n\nP\nD\nF"
 End With

 With Paint
   .Begin(PictureBox1.Image)
   .Font.Size = 24
   .Font.Name = "Ubuntu"
   For j As Byte = 1 To 12
     For b As Byte = 1 To 21
       .DrawText(String.Chr(&1d11a), 50 + (32 * b), 80 + (80 * j), 0, 0, Align.Center)
     Next
   Next 
   .End
 End With

End


Public Sub Button1_Click()

 With Printer1 = New Printer As "Printer1"
   .Orientation = Printer.Portrait
   .Paper = Printer.A4
   .Resolution = Desktop.Resolution
   .OutputFile = "/tmp/file.pdf"     ' Consente la stampa in un file PDF [nota 2]
   .Print
 End With

End  


Public Sub Printer1_Draw()

 With Paint  
   .Font.Name = "Ubuntu"
   .DrawImage(PictureBox1.Image, 0, 0, PictureBox1.Image.W, PictureBox1.Image.H)  
   .End
 End With  

End

Altri interessanti esempi su tale argomento possono essere consultati in questa pagina della Wiki:
Creare, spostare e distruggere un'immagine in una DrawingArea,
nonché - per gli iscritti al forum www.gambas-it.org - scaricando il progetto allegato nella seguente discussione del forum:
https://www.gambas-it.org/smf/index.php?topic=8071.0

Combinando i due casi precedenti

Se combiniamo i due casi precedenti, spostando su un pentagramma musicale con il puntatore del mouse la figura musicale della Croma, sarà possibile vedere l'adattamento della figura (mediante le rotazioni effettuate nel codice) in base alla sua posizione rispetto al terzo rigo del pentagramma.

Private PictureBox1 As PictureBox


Public Sub Form_Open()

 With Me
   .W = 200
   .H = 200
   .Background = Color.White
 End With
 With PictureBox1 = New PictureBox(Me) As "PictureBox1"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
   .Image = New Image(.W, .H, Color.Transparent, Image.Standard)
 End With
 With Paint
   .Begin(PictureBox1.Image)
   .Font.Size = 28
   .Font.Name = "Ubuntu"
   For b As Byte = 1 To 12
     .DrawText(String.Chr(&1d11a), 10 * b, 66, 0, 0)
   Next
   .DrawText(String.Chr(&1d11e), 14, 100)
   .End
 End With
 CreaPictureBox()

End


Private Procedure CreaPictureBox()

 With PictureBox1 = New PictureBox(Me) As "PictureBox1"
   .X = 10
   .Y = -20
   .W = 30
   .H = 81
 End With

 DisegnaFigura()

End


Private Procedure DisegnaFigura()

 If PictureBox1.Y < 44 Then
   PictureBox1.Image = New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
   With Paint
     .Begin(PictureBox1.Image)
     .Font.Size = 28
     .Font.Name = "Ubuntu"
     .DrawText(String.Chr(&1D15F), 14, 35, 0, 0, Align.Normal)
     .End
   End With
' Ribalta orizzontalmente il disegno della figura musicale:
   PictureBox1.Image.Mirror(True, False)
   With Paint
     .Begin(PictureBox1.Image)
     .Font.Size = 28
     .Font.Name = "Ubuntu"
' Al disegno della "Semiminima ribaltata aggiunge il carattere-simbolo della coda della "Croma":
     .DrawText(String.Chr(&1D16E), 3, 33, 0, 0, Align.Normal)
     .End
   End With
' Ribalta verticalmente il disegno sinora ottenuto:
   PictureBox1.Image.Mirror(False, True)
 Else
   PictureBox1.Image = New Image(PictureBox1.W, PictureBox1.H, Color.Transparent, Image.Standard)
   With Paint
     .Begin(PictureBox1.Image)
     .Font.Size = 28
     .Font.Name = "Ubuntu"
     .DrawText(String.Chr(&1d160), -2, 33, 0, 0, Align.Normal)
     .End
   End With
 Endif 

End


Public Sub PictureBox1_MouseMove()

 With PictureBox1
   .Move(.X + Mouse.X - Mouse.StartX, .Y + Mouse.Y - Mouse.StartY)
 End With

 DisegnaFigura()

End


Public Sub PictureBox1_MouseUp()

 CreaPictureBox()

End


Note

[1] Vedere la seguente pagina: Uso di Unicode con gli oggetti di testo.

[2] Ovviamente per ottenere un file immagine, potremo usare il Metodo ".Save()" della Classe Image, quale Proprietà in questo caso della Classe PictureBox:

Public Sub Button1_Click()

 PictureBox1.Image.Save("/tmp/pentagramma.png", 100)

End