Ottenere l'immagine di un Controllo grafico: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
==Mediante la Classe ''Paint''==
==Mediante la Classe ''Paint''==
Nel seguente esempio pratico si intende ottenere l'immagine della ''Label'' posta sul ''Form''.
Nel seguente esempio pratico si intende ottenere l'immagine della ''Label'' posta sul ''Form''.
<BR>Più precisamente mediante le risorse della Classe ''Paint'' si otterrà una sorta di imitazione della ''Label'' e si salverà in un file immagine.
<BR>Più precisamente mediante le risorse della Classe ''Paint'' si otterrà una sorta di imitazione della ''Label'' che sarà salvata in un file immagine.
  Private Label1 As Label
  Private Label1 As Label
  Private Button1 As Button
  Private Button1 As Button
Riga 21: Riga 21:
   End With
   End With
   With Button1 = New Button(Me) As "Button1"
   With Button1 = New Button(Me) As "Button1"
     .W = 60
     .Move(60, 60, Me.W - (Button1.W * 2), Me.H - (Button1.H * 2))
    .H = 60
    .X = Me.W - (Button1.W * 2)
    .Y = Me.H - (Button1.H * 2)
   End With
   End With
   
   
Riga 50: Riga 47:
   
   
  im.Save("/tmp/immagine.png", 100)
  im.Save("/tmp/immagine.png", 100)
End
==Uso delle risorse del Componente ''gb.media''==
Nel seguente codice si otterrà l'immagine di una ''GridView''.
<BR>Ovviamente è necessario attivare il Componente ''gb.media'' .
Private GridView1 As GridView
Private Button1 As Button
Public Sub Form_Open()
  With GridView1 = New GridView(Me)
    .Move(0, 0, 300, 100)
    .Rows.Count = 5
    .Columns.Count = 5
  End With
  For r As Byte = 0 To GridView1.Rows.Max
    For c As Byte = 0 To GridView1.Columns.Max
      GridView1[r, c].Text = "abcde"
    Next
  Next
 
  With Button1 = New Button(Me) As "Button1"
    .Move(60, 60, Me.W - (Button1.W * 2), Me.H - (Button1.H * 2))
  End With
End
Public Sub Button1_Click()
  Dim pl As MediaPipeline
  Dim src, vdc, enc, snk As MediaControl
  pl = New MediaPipeline
  src = New MediaControl(pl, "ximagesrc")
<FONT Color=gray>' ''Assegna l'ID della "GridView":''</font>
  src["xid"] = <FONT Color=red>GridView1.Id</font>
  vdc = New MediaControl(pl, "videoconvert")
  enc = New MediaControl(pl, "pngenc")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/tmp/immagine.png"
  src.LinkTo(vdc)
  vdc.LinkTo(enc)
  enc.LinkTo(snk)
  pl.Play()
  pl.Stop()
  pl.Close()
  Print "Cattura immagine effettuata"
   
   
  End
  End

Versione attuale delle 16:35, 8 set 2025

Mediante la Classe Paint

Nel seguente esempio pratico si intende ottenere l'immagine della Label posta sul Form.
Più precisamente mediante le risorse della Classe Paint si otterrà una sorta di imitazione della Label che sarà salvata in un file immagine.

Private Label1 As Label
Private Button1 As Button


Public Sub _new()

 With Me
   .Center
   .W = 700
   .H = 600
 End With
 With Label1 = New Label(Me)
   .Move(200, 200, 100, 50)
   .Background = Color.Yellow
   .Foreground = Color.Red
   .Alignment = Align.Right
   .Text = "Label gialla"
 End With
 With Button1 = New Button(Me) As "Button1"
   .Move(60, 60, Me.W - (Button1.W * 2), Me.H - (Button1.H * 2))
 End With

End


Public Sub Button1_Click()

 Dim im As Image

' Si crea la superficie dell'immagine che dovrà contenere la riproduzione grafica della "Label" presente sul "Form":
 im = New Image(Label1.W, Label1.H, Color.Transparent, Image.Standard)

 With Paint
   .Begin(im)
' Sarà ricreata la forma geometrica di dimensioni uguali a quella della "Label":
   .FillRect(0, 0, Label1.W, Label1.H, Label1.Background)
' Ora viene impostato il colore del testo della "Label":
   .Brush = .Color(Label1.Foreground)
' Viene impostato il testo con le caratteristiche originarie della "Label":
   .Text(Label1.Text, 0, 0, Label1.W, Label1.H, Label1.Alignment)
   .Fill
   .End
 End With

im.Save("/tmp/immagine.png", 100)

End


Uso delle risorse del Componente gb.media

Nel seguente codice si otterrà l'immagine di una GridView.
Ovviamente è necessario attivare il Componente gb.media .

Private GridView1 As GridView
Private Button1 As Button


Public Sub Form_Open()

 With GridView1 = New GridView(Me)
   .Move(0, 0, 300, 100)
   .Rows.Count = 5
   .Columns.Count = 5
 End With
 For r As Byte = 0 To GridView1.Rows.Max
   For c As Byte = 0 To GridView1.Columns.Max
      GridView1[r, c].Text = "abcde"
   Next 
 Next
 
 With Button1 = New Button(Me) As "Button1"
   .Move(60, 60, Me.W - (Button1.W * 2), Me.H - (Button1.H * 2))
 End With

End 


Public Sub Button1_Click()

 Dim pl As MediaPipeline
 Dim src, vdc, enc, snk As MediaControl

 pl = New MediaPipeline 

 src = New MediaControl(pl, "ximagesrc")
' Assegna l'ID della "GridView":
 src["xid"] = GridView1.Id
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/immagine.png"

 src.LinkTo(vdc)
 vdc.LinkTo(enc)
 enc.LinkTo(snk)

 pl.Play()

 pl.Stop()
 pl.Close()
 Print "Cattura immagine effettuata"

End