Differenze tra le versioni di "Mostrare un'immagine con il Drop del suo file in una PictureBox"

Da Gambas-it.org - Wikipedia.
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il caso è quello in cui si intende far mostrare da una ''PictureBox'' un'immagine, semplicemente trascinando il suo file, preso anche da una finestra esterna all'applicativo Gambas, e rilasciandolo all'interno della predetta ''PictureBox''.
+
Il caso è quello in cui si intende far mostrare in una ''PictureBox'' un'immagine, semplicemente trascinando il suo file desktop, preso anche da una finestra esterna all'applicativo Gambas, e rilasciandolo all'interno della predetta ''PictureBox''.
 +
<BR>Per consentire di mostrare un'immagine di qualsiasi dimensione, la ''PictureBox'' sarà posta all'interno di una ''ScrollView'' e ridimensionata alle dimensioni dell'immagine caricata.
  
 
+
Mostriamo un semplice esempio:
 
+
  Private ScrollView1 As ScrollView
===Usando i componenti ''gb.gtk'', ''gb.gtk3'' o ''gb.gui''===
+
  Private PictureBox1 As PictureBox
Se è stato impostato uno di questi componenti: ''gb.gtk'', ''gb.gtk3'' o ''gb.gui'', allora potrà essere utilizzato il seguente codice:
 
  '''Public''' Sub Form_Open()
 
 
<FONT color=gray>' ''Impostiamo la proprietà "''.Drop''" a "Vero" per consentire l'attivazione dell'evento del "Drop":''</font>
 
    PictureBox1.Drop = True
 
 
'''End'''
 
 
 
'''Public''' Sub PictureBox1_Drop()
 
 
  Dim dati, percorso, percorso_controllato As String
 
 
 
 
  dati = Drag.Data 
 
 
 
  percorso = String.Mid(dati, 8, String.Len(dati))
 
 
  percorso_controllato = controllo(Trim(percorso))
 
   
 
  PictureBox1.Picture = Picture.Load(percorso_controllato)
 
 
'''End'''
 
 
 
<FONT color=gray>' ''I percorsi dei file contnenti uno o più spazi, oppure caratteri particolari, possono generare errore.''
 
' ''Questa funzione intende risolvere quel problema.''</font>
 
'''Private''' Function controllo(percorsoFile As String) As String
 
 
  Dim b As Byte = 1
 
  Dim s1, s2 As String
 
  Dim n As Byte
 
 
 
  While b < Len(percorsoFile) + 1
 
    s1 = String.Mid(percorsoFile, b, 1)
 
    If s1 = "%" Then
 
      n = Val("&" & Mid(percorsoFile, b + 1, 2))
 
      s1 = Chr(n)
 
      b += 2
 
    Endif
 
    s2 &= s1
 
    Inc b
 
  Wend
 
 
  Return s2
 
 
'''End'''
 
 
 
 
 
 
 
===Usando il componente ''gb.qt4''===
 
Se è stato impostato il componente ''gb.qt4'', allora potrà essere utilizzato il seguente codice:
 
'''Public''' Sub Form_Open()
 
 
<FONT color=gray>' ''Impostiamo la proprietà "''.Drop''" a "Vero" per consentire l'attivazione dell'evento del "Drop":''</font>
 
    PictureBox1.Drop = True
 
 
'''End'''
 
 
 
'''Public''' Sub PictureBox1_Drop()
 
 
  Dim dati, percorso, percorso_controllato As String
 
 
 
 
  dati = Drag.Data 
 
 
 
  percorso = String.Mid(dati, 8, String.Len(dati) - 16 - 7)
 
 
   
 
   
  percorso_controllato = controllo(percorso)
 
 
   
 
   
  PictureBox1.Picture = Picture.Load(percorso_controllato)
+
Public Sub Form_Open()
 
   
 
   
'''End'''
+
  With ScrollView1 = New ScrollView(Me)
 +
    .X = 0
 +
    .Y = 0
 +
    .W = Me.W
 +
    .H = Me.H
 +
  End With
 
   
 
   
 +
  With PictureBox1 = New PictureBox(ScrollView1) As "PictureBox1"
 +
    .X = 0
 +
    .Y = 0
 +
    .W = ScrollView1.W
 +
    .H = ScrollView1.H
 +
<FONT color=gray>' ''Impostiamo la proprietà "''.Drop''" a "Vero" per consentire l'attivazione dell'Evento "_Drop":''</font>
 +
    .Drop = True
 +
  End With
 
   
 
   
  <FONT color=gray>' ''I percorsi dei file contnenti uno o più spazi, oppure caratteri particolari, possono generare errore.''
+
  End
' ''Questa funzione intende risolvere quel problema.''</font>
 
'''Private''' Function controllo(percorsoFile As String) As String
 
 
   
 
   
  Dim b As Byte = 1
 
  Dim s1, s2 As String
 
  Dim n As Byte
 
 
   
 
   
 +
Public Sub PictureBox1_Drop()
 
   
 
   
   While b < Len(percorsoFile) + 1
+
  Dim percorso As String
    s1 = String.Mid(percorsoFile, b, 1)
+
    
    If s1 = "%" Then
+
  percorso = Drag.Paste("text/uri-list")[0]
      n = Val("&" & Mid(percorsoFile, b + 1, 2))
 
      s1 = Chr(n)
 
      b += 2
 
    Endif
 
    s2 &= s1
 
    Inc b
 
  Wend
 
 
   
 
   
  Return s2
+
  With PictureBox1
 +
<FONT color=gray>' ''Carica l'immagine nella "PictureBox":''</font>
 +
    .Picture = Picture.Load(Trim(percorso))
 +
<FONT color=gray>' ''Ridimensiona la "PictureBox" adattandola alle dimensioni dell'immagine caricata:''</font>
 +
    .Resize(.Picture.W, .Picture.H)
 +
  End With
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 09:41, 4 ago 2023

Il caso è quello in cui si intende far mostrare in una PictureBox un'immagine, semplicemente trascinando il suo file desktop, preso anche da una finestra esterna all'applicativo Gambas, e rilasciandolo all'interno della predetta PictureBox.
Per consentire di mostrare un'immagine di qualsiasi dimensione, la PictureBox sarà posta all'interno di una ScrollView e ridimensionata alle dimensioni dell'immagine caricata.

Mostriamo un semplice esempio:

Private ScrollView1 As ScrollView
Private PictureBox1 As PictureBox


Public Sub Form_Open()

 With ScrollView1 = New ScrollView(Me)
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
 End With

 With PictureBox1 = New PictureBox(ScrollView1) As "PictureBox1"
   .X = 0
   .Y = 0
   .W = ScrollView1.W
   .H = ScrollView1.H
' Impostiamo la proprietà ".Drop" a "Vero" per consentire l'attivazione dell'Evento "_Drop":
   .Drop = True
 End With

End


Public Sub PictureBox1_Drop()

 Dim percorso As String
  
 percorso = Drag.Paste("text/uri-list")[0]

 With PictureBox1
' Carica l'immagine nella "PictureBox":
   .Picture = Picture.Load(Trim(percorso))
' Ridimensiona la "PictureBox" adattandola alle dimensioni dell'immagine caricata:
   .Resize(.Picture.W, .Picture.H)
 End With

End