Differenze tra le versioni di "Ridurre le dimensioni di una immagine con il Metodo ".Scale()" del Componente gb.cairo"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
Per modificare le dimensioni di una immagine caricata e gestita mediante il Componente gb.cairo, bisognerà utilizzare il Metodo "''.Scale( )''" della Classe statica "''Cairo''".
+
Per modificare le dimensioni di una immagine caricata e gestita mediante il Componente gb.cairo, bisognerà utilizzare il Metodo ".Scale()" della Classe statica ''Cairo''.
 
 
  
 
Nell'esempio che segue si utilizzeranno due immagini, una delle quali potrà essere ridimensionata rispetto all'altra ruotando in avanti o indietro la rotellina del mouse.
 
Nell'esempio che segue si utilizzeranno due immagini, una delle quali potrà essere ridimensionata rispetto all'altra ruotando in avanti o indietro la rotellina del mouse.
Riga 10: Riga 9:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   With iv = New ImageView(Me) As "ImV"
 
   With iv = New ImageView(Me) As "ImV"
Riga 21: Riga 20:
 
   Immagine(0.0)
 
   Immagine(0.0)
 
    
 
    
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub ImV_MouseWheel()
+
  Public Sub ImV_MouseWheel()
 
    
 
    
 
   md += Mouse.Delta
 
   md += Mouse.Delta
Riga 41: Riga 41:
 
   Endif
 
   Endif
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Private''' Procedure Immagine(vf As Float)
+
  Private Procedure Immagine(vf As Float)
 
    
 
    
 
   Dim im1, im2 As Image
 
   Dim im1, im2 As Image
 
    
 
    
 
  <FONT Color=gray>' ''Carica la prima immagine (quella che sarà ridimensionata) avente, ad esempio, sfondo bianco che viene reso trasparente:''</font>
 
  <FONT Color=gray>' ''Carica la prima immagine (quella che sarà ridimensionata) avente, ad esempio, sfondo bianco che viene reso trasparente:''</font>
   im1 = Image.Load("<FONT Color=gray>''/percorso/della/prima/immagine''</font>").Erase(Color.White)
+
   im1 = Image.Load("<FONT Color=darkgreen>''/percorso/della/prima/immagine''</font>").Erase(Color.White)
 
    
 
    
 
  <FONT Color=gray>' ''Carica la seconda immagine, le cui dimensioni resteranno invariate:''</font>
 
  <FONT Color=gray>' ''Carica la seconda immagine, le cui dimensioni resteranno invariate:''</font>
   im2 = Image.Load("<FONT Color=gray>''/percorso/della/seconda/immagine''</font>")
+
   im2 = Image.Load("<FONT Color=darkgreen>''/percorso/della/seconda/immagine''</font>")
 
    
 
    
 
   sc += vf
 
   sc += vf
Riga 58: Riga 58:
 
   With Cairo
 
   With Cairo
 
     .Begin(im2)
 
     .Begin(im2)
     <FONT Color=#B22222>.Scale</font>(sc, sc)
+
     <FONT Color=red>.Scale</font>(sc, sc)
 
     .Source = .ImagePattern(im1, 0, 0)
 
     .Source = .ImagePattern(im1, 0, 0)
 
     .Paint
 
     .Paint
Riga 67: Riga 67:
 
   Me.Caption = Format(sc, "0.000")
 
   Me.Caption = Format(sc, "0.000")
 
    
 
    
  '''End'''
+
  End
  
  
  
 
=Note=
 
=Note=
[1] Vedere anche: [[Caricare_un_Oggetto_''Image''_direttamente_in_una_''ImageView''_con_gb.cairo|Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo]]
+
[1] Vedere anche: [[Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo]]

Versione attuale delle 16:32, 3 lug 2024

Per modificare le dimensioni di una immagine caricata e gestita mediante il Componente gb.cairo, bisognerà utilizzare il Metodo ".Scale()" della Classe statica Cairo.

Nell'esempio che segue si utilizzeranno due immagini, una delle quali potrà essere ridimensionata rispetto all'altra ruotando in avanti o indietro la rotellina del mouse.
In particolare ruotando anche semplicemente avanti la rotellina del mouse, si attiverà un processo di ingrandimento continuo dell'immagine. Se si ruoterà indietro la rotellina, tale processo di ingrandimento si arresterà. Analogo comportamento si avrà ruotando indietro la rotellina: si avvierà un processo di rimpicciolimento dell'immagine; ma se si ruoterà poi in avanti la rotellina, quel processo si arresterà; e così via.
L'immagine risultante delle due caricate sarà visualizzata da un Oggetto "ImageView". [nota 1]

Private iv As ImageView
Private md As Short
Private sc As Float = 1.0


Public Sub Form_Open()
 
 With iv = New ImageView(Me) As "ImV"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
 End With
 
 Immagine(0.0)
  
End


Public Sub ImV_MouseWheel()
 
 md += Mouse.Delta
 
 If Mouse.Delta == 1 Then
   Repeat
     If md > 1 Then md = 1
     Immagine(0.001)
     Wait 0.03
   Until md < 1
 Else
   Repeat
     If md < -1 Then md = -1
     Immagine(-0.001)
     Wait 0.03
   Until md > -1
 Endif
 
End


Private Procedure Immagine(vf As Float)
 
 Dim im1, im2 As Image
 
' Carica la prima immagine (quella che sarà ridimensionata) avente, ad esempio, sfondo bianco che viene reso trasparente:
 im1 = Image.Load("/percorso/della/prima/immagine").Erase(Color.White)
 
' Carica la seconda immagine, le cui dimensioni resteranno invariate:
 im2 = Image.Load("/percorso/della/seconda/immagine")
 
 sc += vf
 
 With Cairo
   .Begin(im2)
   .Scale(sc, sc)
   .Source = .ImagePattern(im1, 0, 0)
   .Paint
   iv.Image = .Device
   .End
 End With
 
 Me.Caption = Format(sc, "0.000")
  
End


Note

[1] Vedere anche: Caricare un Oggetto ''Image'' direttamente in una ''ImageView'' con gb.cairo