Autore Topic: immagini sovapposte con tendina scorrevole  (Letto 172 volte)

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
immagini sovapposte con tendina scorrevole
« il: 01 Febbraio 2024, 22:50:41 »
Il titolo è piuttosto strano, lo so, ma meglio non mi veniva.
Veniamo al dunque, dovrei realizzare una sorta di visualizzazione con due immagini sovrapposte, la prima è l’immagine originale, la seconda è la stessa immagine trattata con dei filtri grafici.

Vorrei che la visualizzazione avvenisse come quelle presenti a metà pagina qui: https://www.cutout.pro/photo-enhancer-sharpener-upscaler

Non ho idea da dove cominciare, lo splitter sembrava fare al caso mio, ma in realtà tiene le immagini separate e non sovrapposte

Qualcuno ha già fatto una cosa del genere o sa come farla?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:immagini sovapposte con tendina scorrevole
« Risposta #1 il: 02 Febbraio 2024, 01:48:46 »
...forse una cosa così:

Codice: [Seleziona]
Private PictureBox1 As PictureBox
Private PictureBox2 As PictureBox
Private Panel1 As Panel
Private Separator1 As Separator
Private im As Image


Public Sub Form_Open()

  With PictureBox1 = New PictureBox(Me) As "PictureBox1"
    .X = 100
    .Y = 100
    .Image = Image.Load("/percorso/del/primo/file/immagine")
    .W = .Image.W
    .H = .Image.H
  End With
 
  im = Image.Load("/percorso/del/secondo/file/immagine")
 
  With PictureBox2 = New PictureBox(Me) As "PictureBox2"
    .X = 100
    .Y = 100
    .Image = im
    .Image = .Image.Stretch(PictureBox1.W, PictureBox1.H)
    .Image = .image.Resize(.Image.W / 2, .Image.H)
    .W = .Image.W
    .H = .Image.H
  End With

  With Separator1 = New Separator(Me) As "Separator1"
    .X = PictureBox1.X + (PictureBox1.W / 2) - 2
    .Y = PictureBox1.Y
    .W = 1
    .H = PictureBox1.H
    .Background = Color.ButtonBackground
  End With
  With Panel1 = New Panel(Me) As "Panel1"
    .X = (PictureBox1.X + (PictureBox1.W / 2)) - .W - 1
    .Y = PictureBox1.Y + PictureBox1.H * 0.3
    .W = 16
    .H = 16
    .Background = Color.ButtonBackground
  End With

End

Public Sub Panel1_MouseMove()

  With Panel1
    .Move(.X + Mouse.X - Mouse.StartX, .Y + Mouse.Y - Mouse.StartY)
    If .X + (.W / 2) < PictureBox1.X Then .X = PictureBox1.X - (.W / 2)
    If .X + .W > PictureBox1.X + PictureBox1.W Then Panel1.X = PictureBox1.X + PictureBox1.W - (.W / 2)
    .Y = PictureBox1.Y + PictureBox1.H * 0.3
  End With
 
  Separator1.Move(Panel1.X + 8, Separator1.Y)

  With PictureBox2
    .Image = im
    .Image = .Image.Stretch(PictureBox1.W, PictureBox1.H)
    .Image = .Image.Resize(Separator1.X, .H)
    .Resize(Separator1.X - .X, .H)
    .Image = .Image.Resize(.W, .H)
  End With

End
« Ultima modifica: 02 Febbraio 2024, 10:07:39 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re:immagini sovapposte con tendina scorrevole
« Risposta #2 il: 02 Febbraio 2024, 17:18:51 »
 :o :o :o
Bellissimo!
Mai usato un separator...

Sei il mio eroe! Ahahahh

Grazie!

C'è una cosa che non riesco a capire: come posso impedire che le picturebox eccedano le dimensioni del form o di uno spazio predeterminato, per esempio da un pannello in cui le immagini si devono adattare per riempire il massimo dello spazio disponibile senza schizzare fuori? Se ci provo mi viene fuori un caos primordiale...
« Ultima modifica: 02 Febbraio 2024, 17:59:48 da alcresio »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:immagini sovapposte con tendina scorrevole
« Risposta #3 il: 02 Febbraio 2024, 18:54:40 »
come posso impedire che le picturebox eccedano le dimensioni del form o di uno spazio predeterminato, per esempio da un pannello in cui le immagini si devono adattare per riempire il massimo dello spazio disponibile senza schizzare fuori?
Per dimensionare dinamicamente un'immagine, adattandola a uno spazio, puoi usare il Metodo ".Stretch()" della Classe Image....ovviamente con le possibili distorsioni dell'immagine originaria.
Se devi dimensionare il Controllo PictureBox, puoi usare il suo Metodo ".Resize()".
Non so se ho risposto coerentemente con quanto volevi sapere.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re:immagini sovapposte con tendina scorrevole
« Risposta #4 il: 02 Febbraio 2024, 22:42:59 »
Credo di si, ora devo solo provare per capire come il ,strech ragiona...
 :ok: