scommetto che è una sciocchezza :D :D
Be'.... non è proprio proprio una sciocchezza ! :nono:
Come lascia intendere un po' Top Fuel, bisogna capire di quale oggetto, che dovrà contenere testo ed immagine, si sta parlando.
Se non intendi integrare testo in una immagine (creando così insomma una nuova immagine) da mostrare successivamente, ma invece intendi agire ...a crudo con testo ed immagine mantenuti come elementi ben distinti, allora suggerirei l'uso di una TextEdit. Poiché, però, la TextEdit non possiede una sorta di proprietà .Picture, capace di caricare direttamente le immagini, ci serviremo strategicamente, in alternativa, della proprietà .RichText e del codice HTML.
Volendo si potrà utilizzare anche una TextLabel; ma in tal caso si utilizzerà la proprietà .Text .
Facciamo un esempio pratico con una TextEdit:
Public Sub Form_Open()
' Dichiariamo una variabile "Picture"...
Dim p As New Picture
' ...con la quale carichiamo l'immagine, che farà da sfondo;
' ma la carichiamo qui solo per ottenere successivamente le sue dimensioni:
p = p.Load("[i]immagine_che_sarà_caricata_poi_come_sfondo[/i]")
' Per caricare l'immagine effettivamente in una "TextEdit", bisogna crearvi
' una "Tabella" con gli appositi tag HTML .
' Si sfrutterà, così, la capacità della <TABLE> di caricare le immagini.
' Impostiamo le dimensioni della tabella in base alle dimensioni
' della immagine precedentemente caricata nella variabile di tipo "Picture".
' Con la proprietà "background=" della Tabella carichiamo effettivamente
' l'immagine nella predetta Tabella creata e dimensionata:
TextEdit1.RichText = "<TABLE width=" & p.W & " height=" & p.H & " background=immagine_da_caricare_come_sfondo>" &
"<TR><TD align=justify>Questo è un testo qualsiasi</td></tr></table>"
End
L'intero testo, che sarà contenuto nella TextEdit, affinché possa stare tutto al di sopra dell'immagine caricata, dovrà continuare ad essere gestito all'interno della cella (nel tag <TD> ) della Tabella. Quindi anche eventuali cambiamenti delle sue proprietà (colore, stile, etc) dovranno essere gestiti secondo il protocollo HTML.
...già ! :-X
Public Sub Form_Open()
Dim p As Picture
p = picture.Load(Application.Path & "img/Loshu.gif") ' carichiamo una immagine
With Paint
.begin(p)
.Font.size = 10
.DrawText("E ' una matrice di aspetto 3 × 3 contenente" &
"tutti gli interi da 1 a 9 senza ripetizioni." &
"Sommando i numeri sulle diverse righe," &
"colonne o diagonali si ottenga sempre" &
"lo stesso valore, che deve essere" &
"(1 + 2 + ...+9) / 3 = 15." &
&
"Perch è una Tartaruga?" &
"La leggenda narra che In Cina nei pressi" &
"villaggio si ebbe una disastrosa piena del" &
"fiume.F ù causata dall'ira del dio del fiume." &
"Egli per far capire quanti sacrifici volesse" &
"mando delle tartarughe con" &
"il quadro magico sopra il guscio.", 10, 10, 100, 100, 3)
.End
End With
PictureBox2.Picture = p
End
mi dà "unable to load picture"
ma il percorso è giusto....
e un altra cosa...
si può cambiare font alla scritta?
l'immagine va "trasparificata" (termine appena coniato, dicesi fatta diventare un pò trasparente) prima di caricarla (magari con gimp o similari)?
per ora è tutto :ciao:
l'immagine va "trasparificata" (termine appena coniato, dicesi fatta diventare un pò trasparente) prima di caricarla (magari con gimp o similari)?
La semitrasparenza può essere applicata agevolmente ad un'immagine mediante il metodo Opacity() della Classe Image.
Poiché la semitrasparenza agisce su tutta l'immagine, affinché non sia soggetto anche il testo all'azione del predetto metodo Opacity(), è opportuno applicare la semitrasparenza sull'immagine originaria, prima di integrarla con il testo.
Pertanto io modificherei il tuo codice così:
Public Sub Form_Open()
Dim i As New Image
Dim p As Picture
' carichiamo una immagine in una variabile di tipo "Image":
With i = i.Load(Application.Path &/ "img/Loshu.gif")
' Questo ci consente di applicarle la "semitrasparenza"
' (ad esempio un valore a virgola mobile di 0,3):
.Opacity(0.3)
End With
' Andiamo a trasformare l'immagine, integrandola con del testo:
With Paint
.Begin(i)
.Font.size = 10
' Cambiamo il font al testo (per curiosità qui inseriremo i caratteri greci):
.Font.Name = "symbol"
.DrawText("E ' una matrice di aspetto 3 × 3 contenente" &
"tutti gli interi da 1 a 9 senza ripetizioni." &
"Sommando i numeri sulle diverse righe," &
"colonne o diagonali si ottenga sempre" &
"lo stesso valore, che deve essere" &
"(1 + 2 + ...+9) / 3 = 15." &
"Perch è una Tartaruga?" &
"La leggenda narra che In Cina nei pressi" &
"villaggio si ebbe una disastrosa piena del" &
"fiume.F ù causata dall'ira del dio del fiume." &
"Egli per far capire quanti sacrifici volesse" &
"mando delle tartarughe con" &
"il quadro magico sopra il guscio.", 10, 10, 100, 100, 3)
.End
End With
' Procediamo a convertire l'immagine da "Image" a "Picture" ...
p = i.Picture
'...cosicché potremo caricarla in una "PictureBox":
PictureBox1.Picture = p
End
sto sospettando che il percorso sia sbagliato....
allora io ho l'immagine in
/home/simone/Scrivania/Formulinux/img/Loshu.gif
e
Application.Path & "img/Loshu.gif"
dovrebbe essere lo stesso percorso
o sbaglio....
:violent:
Hai dimenticato uno slash nel percorso !
With i = i.Load(Application.Path &/ "img/Loshu.gif")
o anche così:
With i = i.Load(Application.Path & "/img/Loshu.gif")
una cosina....
tutto funziona e è ok....
ma mi carica l'immagine un pò piccolina e io volevo ingrandirla un pò (diciamo Stretch ma quello fa troppo)
ora io ho uno spazio a disposizione abbastanza ampio (h=296,w=351) e vorrei occuparne il 70/80%
avevo provato con
Dim i As New Image
Dim p As Picture
Dim pe, w, h As Float
pe = 80
' carichiamo una immagine in una variabile di tipo "Image":
With i = i.Load(Application.Path & "/img/Loshu.gif")
' Questo ci consente di applicarle la "semitrasparenza"
' (ad esempio un valore a virgola mobile di 0,3):
.Opacity(0.3)
h = (pe / 100) * 296
w = (pe / 100) * 352
.Resize(w, h)
.Stretch(w, h)
End With
p = i.Picture
PictureBox2.Picture = p
peò così, oltre che non funziona, non mantiene le proporzioni dell'immagine....
se funzionasse....mantenere le proporzioni non sarebbe un problema...
ditemi dove sgaglio e più o meno cosa fare ;)