Italian Abbellimento miniature immagini

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: 300
Last edited:
Top