Italian Abbellimento miniature immagini

AlpVir

Well-Known Member
Licensed User
Longtime User
Ho una mezza dozzina di imageview (dimensioni approssimative 100 pixel) e vorrei abbellirne la visualizzazione con un effetto di ombra, una cornice laterale, qualcosa insomma che le renda più "simpatiche".
Qualche suggerimento ?
Grazie per l'attenzione.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Appunto, vorrei aggiungere (esternamente all'immagine) una cornice, un'ombra, qualcosa che dia risalto all'immaginina.
 

KPmaster

Member
Licensed User
Longtime User
Supponendo che le tue immagini siano 100x100, puoi provare a fare così:

  • creati un'immagine sfumata e colorata come meglio desideri (puoi usare programmi come GIMP), di dimensione 105x105
  • crea un Panel per ogni immagine che vuoi visualizzare, di dimensione 105x105, ed impostane come background l'immagine che hai creato prima, usando il comando MioPannello.SetBackgroundImage
  • aggiungi le immagini, impostandone come Parent il Panel specifico
In questo modo avrai le tue immagini come fossero in cornici, o con quello che tu avrai creato come immagine di sfondo.
Se hai tante immagini, questo potrebbe però influire sulle prestazioni.

Se invece preferisci qualcosa di meno "pesante", puoi provare a leggere questo thread per sfruttare un colore gradiente al posto di un'immagine di sfondo: http://www.b4x.com/android/forum/threads/gradientdrawable.8074/#post45518

In alternativa, ecco una procedura che puoi sfruttare per impostare il colore gradiente:

B4X:
Sub ColoreGradiente(col1 As Int, col2 As Int) As GradientDrawable
    Dim gd As GradientDrawable
    Dim c(2) As Int

    c(0) = col1
    c(1) = col2
    gd.Initialize("TOP_BOTTOM", c)
    gd.CornerRadius = 0
   
    Return gd
End Sub

Panel.Background = ColoreGradiente(Colors.DarkGray, Colors.LightGray)
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Grazie dei suggerimenti.
La prima soluzione non è adatta al mio caso poichè le dimensioni delle immaginine non sono tutte uguali.
La seconda potrebbe essere più praticabile in quanto da codice si dovrebbe riuscire a creare un pannello di dimensioni appena superiori a quelle della singola immaginina.
Una terza soluzione potrebbe essere l'uso del canvas su cui disegnare delle righine.
Non hai per caso una soluzione già fatta ! Chiedo troppo ?
 

KPmaster

Member
Licensed User
Longtime User
Prova a dare un'occhiata alla funzione DrawRect

B4X:
Dim MioCanvas As Canvas
Dim MioRect As Rect
MioRect.Initialize(0dip, 0dip, 100dip, 100dip)
MioCanvas.DrawRect(MioRect, Colors.Cyan, True, 0)
 

AlpVir

Well-Known Member
Licensed User
Longtime User
La sub SetTextShadow suggerita da LucaMs non sembra che funzioni nè con i Panel nè con le ImageView.
Alla fine ho scelto il sistema che ritengo meno pesante, ossia disegnare un bordino in basso e a destra. Il risultato mi sembra soddisfacente (vedi allegato)
B4X:
                '--- disegno una righina a destra ed in basso
'                Dim C                      As Canvas
'               C.Initialize (Activity)
              
                Dim P2 As Path
                '--- punto iniziale
                Y=ivs(i-1).top+ivs(i-1).Height+1
                X=ivs(i-1).Left+4
                P2.Initialize (X,Y)
                '--- linea in basso          
                X=ivs(i-1).Left+ivs(i-1).Width+1
                P2.LineTo (X,Y)
                '--- linea verticale a destra
                Y=ivs(i-1).top+4
                P2.LineTo (X,Y)
                C.DrawPath(P2,Colors.RGB(20,20,20) ,False,3dip)
 

Attachments

  • q.jpg
    q.jpg
    131.7 KB · Views: 236
Last edited:
Top