Anche io l'avevo pensato ma così non mi funge:
Dim p As Picture
p = Picture["icon:/22/add"] ' carichiamo una immagine'
With Paint
.begin(p)
.Font.size = 12
.DrawText("PIPPO") ' poi avremmo spostata'
.End
End With
ToolButton1.Picture = p
Così funziona:
Public Sub Form_Open()
Dim im As Image
im = Image.Load("/usr/share/icons/hicolor/48x48/apps/libreoffice-main.png")
With Paint
.begin(im)
.Font.size = 9
.Brush = .Color(Color.Red)
.DrawText("Testo", 1, 5, im.W, im.H, Align.Center)
.End
End With
ToolButton1.Picture = im.Picture
End
http://www.gambas-it.org/wiki/index.php?title=Inserire_del_testo_in_una_Image_ed_in_una_Picture
Si dovrebbe poter scrivere anche in una Picture :-\
Exactement.
Public Sub Form_Open()
Dim p As Picture
p = Picture.load("/usr/share/icons/hicolor/48x48/apps/libreoffice-main.png") ' carichiamo una immagine'
With Paint
.begin(p)
.Font.size = 10
.Brush = .Color(Color.Red)
.DrawText("Testo", 1, 5, p.W, p.H, Align.Center)
.End
End With
ToolButton1.Picture = p
End
Comunque sia le tue argomentazioni mi hanno suggerito questa soluzione che può essere adattata a qualunque formato si desideri:
Dim p As Picture
Dim i, ic As Image
' Supponiamo di avere un toolbutton di 50x64'
i = New Image(50, 64)
p = Picture["icon:/22/add"] ' carichiamo una immagine'
ic = p.Image
' disegnamo' l'immagine nel centro del quadrante superiore'
i.PaintImage(ic, (i.W / 2) - (p.W / 2), (i.H / 2) - p.H)
With Paint
.begin(i)
.Font.size = 11
' scriviamo al centro del quadrante inferiore'
.DrawText("PIPPO", 0, 0, i.W, i.H + (i.H / 2), Align.Center)
.End
End With
p = i.Picture
ToolButton1.Picture = p
Comunque sia le tue argomentazioni mi hanno suggerito questa soluzione
L'idea è stata tua, non mia, poiché io ho interpretato in modo tridimensionale l'intenzione di luca.decarlo !
.... questa soluzione che può essere adattata a qualunque formato si desideri
...però solo se l'immagine è sufficientementre piccola rispetto al ToolButton, altrimenti viene spostata in tutto o in parte al di fuori della maschera del ToolButton.
Si deve studiare meglio la parte generale per l'assegnazione della coordinata attinente al posizionamento del testo e dell'immagine.
Nel tuo codice modificherei così la riga della creazione dell'immagine trasparente base:
i = New Image(ToolButton1.W, ToolButton1.H, &FF0000FF)
altrimenti noto che l'immagine trasparente si mostra sporca.