Spostare il testo con il mouse all'interno dell'area grafica con la Classe Cairo

Da Gambas-it.org - Wikipedia.

Per poter sfruttare le risorse di Cairo in Gambas, bisognerà attivare anche il componente gb.cairo, ed operare quindi con le funzioni e le proprietà messe a disposizione della Classe non creabile denominata: Cairo.

La Classe Cairo consente in generale di disegnare su un oggetto di tipo Image, che si avrà cura di passare al metodo .Begin() prima di chiamare le funzioni di disegno previste dalla Classe.


Riguardo al caso previsto da questa pagina, faremo un esempio di possibile codice, nel quale passeremo al metodo .Begin() un'immagine vuota e trasparente, caricata come oggetto Image, sulla quale faremo apparire un testo, mediante la funzione .DrawText() alle coordinate stabilite dal metodo .LineTo(). I dati Image vengono, quindi, convertiti in una Picture e mostrati così in una PictureBox:

Private i As New Image
Private i2 As New Image
 

Public Sub Form_Open()

  i = i.Load("file_immagine_trasparente")
  i2 = i.Copy(0, 0, i.W, i.H)

End


Public Sub PictureBox1_MouseDown()
 
' Mettiamo a disposizione nuovamente un oggetto immagine completamente vuoto:
  i = i2.Copy(0, 0, i2.W, i2.H)
 
  With Cairo
    .Begin(i)
    .LineTo(Mouse.X, Mouse.Y)
    .DrawText("Testo qualsiasi")
    .Fill
    .End
  End With
  
' Convertiamo i dati "Image" del risultato in una "Picture", che mostreremo in una "PictureBox":
  PictureBox1.Picture = i.Picture

End


Public Sub PictureBox1_MouseMove()  ' Gestisce l'evento dello spostamento del mouse sull'area grafica:

' Mettiamo a disposizione nuovamente un oggetto immagine completamente vuoto:
  i = i2.Copy(0, 0, i2.W, i2.H)

  With Cairo
    .Begin(i)
    .LineTo(Mouse.X, Mouse.Y)
    .DrawText("Testo qualsiasi")
    .Fill
    .End
  End With

' Convertiamo i dati "Image" del risultato in una "Picture" che mostreremo in una "PictureBox":
  PictureBox1.Picture = i.Picture

End