Autore Topic: [risolto] immagine come "sfondo" al testo  (Letto 2046 volte)

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
[risolto] immagine come "sfondo" al testo
« il: 29 Maggio 2013, 21:24:06 »
vorrei sapere come inserire un immagine sotto al testo, anche leggermente più trasparente per far leggere il testo...

scommetto che è una sciocchezza :D :D
« Ultima modifica: 30 Maggio 2013, 20:36:22 da simo97 »
;D

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #1 il: 29 Maggio 2013, 23:07:05 »
C'è qualcosa sul Wiki, ma riguarda Picturebox e Gridview.
Sulle Label e similari non so se sia possibile farlo.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #2 il: 30 Maggio 2013, 03:24:23 »
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:
Codice: gambas [Seleziona]

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
« Ultima modifica: 02 Gennaio 2021, 19:00:28 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #3 il: 30 Maggio 2013, 07:41:01 »
E io che pensavo fosse semplice....

Ma non si può portare dietro la picture box?
A modificarla ci penso prima di caricala...
;D

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #4 il: 30 Maggio 2013, 13:43:23 »

Ma non si può portare dietro la picture box?
A modificarla ci penso prima di caricala...
Si potrebbe provare a porre una PictureBox al di sopra dell'oggetto di testo.
La PictureBox dovrebbe in tal caso avere una immagine semitrasparente.
« Ultima modifica: 30 Maggio 2013, 15:40:49 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #5 il: 30 Maggio 2013, 13:55:05 »
Mooolto bene :D :D :D
 :bravo:
;D

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #6 il: 30 Maggio 2013, 15:01:33 »
Una terza possibilità sarebbe quella, se si necessita semplicemente di avere un testo fisso su una immagine sempre identica, di generare una immagine del tutto nuova inserendo il testo in un'immagine.
In tal caso si userebbe, per mostrare la nuova immagine ottenuta, ovviamente una PictureBox.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #7 il: 30 Maggio 2013, 15:38:09 »
la terza ipotesi mi sembra abbastanza appropriata....
;D

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #8 il: 30 Maggio 2013, 18:20:25 »
Codice: gambas [Seleziona]
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:
« Ultima modifica: 30 Maggio 2013, 18:23:04 da simo97 »
;D

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #9 il: 30 Maggio 2013, 18:38:39 »
Codice: gambas [Seleziona]
Public Sub Form_Open()
Dim p As Picture
  p = picture.Load(Application.Path & "img/Loshu.gif")   ' carichiamo una immagine

mi dà "unable to load picture"
ma il percorso è giusto....


Devi aggiungere la parola New :

Codice: gambas [Seleziona]

  Dim p As New Picture



e un altra cosa...
si può cambiare font alla scritta?

Sì con la proprietà .Name della proprietà .Font della Classe .Paint .
« Ultima modifica: 30 Maggio 2013, 19:07:23 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #10 il: 30 Maggio 2013, 18:53:21 »
aaaaaaaaaaaaaa
ci sarebbe da correggere nella wiki....

ok...


EDIT
non è cambiato nulla :'(
;D

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #11 il: 30 Maggio 2013, 19:07:31 »
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ì:
Codice: gambas [Seleziona]

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
« Ultima modifica: 30 Maggio 2013, 19:39:05 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #12 il: 30 Maggio 2013, 19:18:45 »
EDIT
non è cambiato nulla :'(
Scusami, non ho visto che hai usato direttamente il nome della Classe ".Picture" per caricare l'immagine. Quindi la parola New non è necessaria.
Sospetto che vi sia un problema nel percorso ove è situata l'immagine, e pertanto non riesce a caricarla.


ci sarebbe da correggere nella wiki....
Lì è stato usato il metodo Load() direttamente con il nome della Classe Picture, e non con la variabile di tipo Picture.
Quindi va bene, come detto prima.
« Ultima modifica: 30 Maggio 2013, 19:39:34 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #13 il: 30 Maggio 2013, 19:21:30 »
stessa cosa....

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....

forse quache errore nel nome...
l'immagine è questa....
;D

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: immagine come "sfondo" al testo
« Risposta #14 il: 30 Maggio 2013, 19:25:18 »
Codice: gambas [Seleziona]
Dim i As Image  
[...]


così mi dà null object per ovvi motivi 
;D