Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Inserire le immagini nelle picturesBox
Forum - C# / VB.NET - Inserire le immagini nelle picturesBox - Pagina 5

Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:38
Sabato, 24/10/2015
Pubblica un file zip con il progetto da scaricare così si capisce finalmente cosa fai ...

Ultima modifica effettuata da nessuno il 24/10/2015 alle 11:07


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 16:15
Sabato, 24/10/2015
il file è questo:
http://www.mediafire.com/download/b849ot35iere7zm/WindowsF ...

stavo provando a fare lo stesso progetto di Thejust da capo per imparare ma non capisco come fa a richiamare la List<> dal Form1 senza instanziare nulla.
Nel progetto di Thejust il panel si vede diversamente da quello che ho fatto io.
Se potete spiegarmi come fare.

PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 17:34
Domenica, 25/10/2015
Premetto che ho impostato a 5 le pictureBox iniziali (lo scrivo perchè non si sa mai può essere utile come informazione).
Quando premo il BDestro (button) le immagini una volta arrivata all'ultima deve continuare ripartendo dalla prima.
Quando premo il BSinistro (button) le immagini dalla prima riparte dall'ultima fino ad arrivare alla prima.

Per il button BDestro ho fatto cosi:
Codice sorgente - presumibilmente C# / VB.NET

  1. Offset++;
  2.             Steps = Offset;
  3.             for (int i = 0; i < Controls.Count; i++)
  4.             {
  5.                 if (Controls[i].GetType() == typeof(PictureBox))
  6.                 {
  7.                     if (Steps >= _images.Count - 1) Steps = -1;
  8.                     Controls[i].BackgroundImage = _images[++Steps];
  9.                     //Steps++;
  10.                 }
  11.             }



I problemi sono 2
1. Nella prima pictureBox non parte subito dalla seconda ma dalla terza per poi continuare bene.
2. E' che arriva all'ultima ricomincia ma fa solamente un giro poi non continua più.

Per il pulsante BSinistro il codice è questo:
Codice sorgente - presumibilmente C# / VB.NET

  1. Offset--;
  2.             Steps = Offset;
  3.             for (int i = 0; i < Controls.Count; i++)
  4.             {
  5.                 if (Controls[i].GetType() == typeof(PictureBox))
  6.                 {
  7.                     if (Steps < 1) Steps = _images.Count;
  8.                     Controls[i].BackgroundImage = _images[--Steps];
  9.                     //Steps--;
  10.                 }
  11.             }



Ma il problema è che una volta premuto il pulsante nella prima pictureBox viene messa l'ultima ma mi scombina le altre sulla destra e in più non continua a ruotare.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:54
Lunedì, 26/10/2015


Riguardo alle pictureBox, Assicurati che nelle priprieta' sia impostato 4 e non 5.
Anche lo 0 viene contato.
Visto che ti trovi, modifica anche direttamentr il valore della variabile
NumPictureBox.
Cioe' la prima varibile subito dopo l'inizializzazione dei componenti.

Se sballa il conteggio o continua a scorrere significa che l'indice e settato male.

Ultima modifica effettuata da Thejuster il 26/10/2015 alle 9:57


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 0:58
Martedì, 27/10/2015
Ho impostato  5
Codice sorgente - presumibilmente C# / VB.NET

  1. private int _numpicbox = 5; //Per il numero di pictureBox



Io vorrei far girare sempre le immagini sia in un verso che nell'altro, ho provato cosi:
Codice sorgente - presumibilmente C++

  1. public void MoveRight()
  2. {
  3.    Offset++;
  4.    Steps = Offset;
  5.    for (int i = 0; i < Controls.Count; i++)
  6.    {
  7.        if (Controls[i].GetType() == typeof(PictureBox))
  8.        {
  9.            if (Steps >= _images.Count - 1) Steps = -1;
  10.            Controls[i].BackgroundImage = _images[++Steps];
  11.            //Steps++;
  12.        }
  13.    }
  14. }



ma si ferma dopo un giro.
Mi puoi consigliare per non riesco proprio farlo grazie.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:53
Martedì, 27/10/2015
Per ottenere quello che dici, serve un'altro algoritmo. questo non va bene.
Questo è scritto per arrivare all'ultimo frame e fermarsi per poi abilitare il reverse.
Non è stato concepito per continuare a scorrere.

Prova a ragionare con la tua testa.
Come faresti per farlo girare in continuazione?

prova a mostrarmi qualcosa di tuo


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 2:33
Martedì, 15/03/2016
Ciao Thejuster scusami per il ritardo di risposta, ma ho avuto problemi ora risolti, e sono di nuovo qui.

Ti posto il codice del progetto che ho fatto per far ruotare le immagini, e funziona (se c'è un modo migliore (o corretto) se ti va ti spiegarmelo ti sarei grato) ma c'è un problema.

Il link è questo:
http://www.mediafire.com/download/uwr9evo730xc8j8/Prova+im ...

Per questo esempio facciamo che si può solo cliccare sulla pictureBox1.
Quando clicco sulla pictureBox1 con l'immagine sotto ad esempio A deve scrivere sulle label un testo.
Esempio label1.Text = "Frase1"
              label2.Text = "Frase2"
Se premo sul pulsante per far ruotare le immagini spostando nella pictureBox1 l'immagine B, nelle label deve scrivere:
Esempio label1.Text = "Frase3"
              label2.Text = "Frase4"

e cosi via, ma non riesco, nel progetto nell' evento clic della pictureBox c'è il codice di prova che ho fatto, ma non funziona.

Un aiuto per favore, grazie in anticipo.

Ultima modifica effettuata da lupetto77 il 15/03/2016 alle 2:33
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:37
Mercoledì, 16/03/2016
puoi mediare alle strutture ed assegnare un riferimento ad ogni immagine che avrà un tag o come dire un un nome.
Che al click sarà visualizzato sulla label.

un esempio è:

Codice sorgente - presumibilmente C#

  1. public struct _immagini
  2. {
  3.  
  4.  public Image img;
  5.  public string riferimento;
  6.  
  7. }
  8.  
  9.  
  10. List<_immagini> Immagini = new List<_immagini>();




Al form load. Invece di aggiungere direttamente un elemento nella lista

Codice sorgente - presumibilmente Plain Text

  1. immagini.Add(Properties.Resources.A);
  2.             immagini.Add(Properties.Resources.B);
  3.             immagini.Add(Properties.Resources.C);
  4. //ecc. ecc.



fai in questo modo

Codice sorgente - presumibilmente C# / VB.NET

  1. //preparo la struttura
  2.  
  3. _immagini img = new _immagini();
  4.  
  5. img.img = Properties.Resource.A;
  6. img.riferimento = "Lettera A";
  7.  
  8. Immagini.Add(img);




Quando scorri le immagini:


Codice sorgente - presumibilmente C++

  1. private void btnSinistra_Click(object sender, EventArgs e)
  2.         {
  3.             // Richiamo il metodo per spostare di uno la posizione
  4.             RuotaASinistra(1);
  5.  
  6.             // Visualizzo nelle pictureBox le immagini ruotate
  7.             int conta = 0;
  8.             for (int i = Controls.Count - 1; i >= 0; i--)
  9.             {
  10.                 if (Controls[i].GetType() == typeof(PictureBox))
  11.                 {
  12.                      //Così
  13.                     Controls[i].BackgroundImage = Immagini[conta].img;
  14.                     Controls[i].Tag = Immagini[conta].riferimento;
  15.                     conta++;
  16.                 }
  17.             }
  18.         }
  19.  
  20.         private void btnDestra_Click(object sender, EventArgs e)
  21.         {
  22.             // Richiamo il metodo per spostare di uno la posizione
  23.             RuotaADestra(1);
  24.  
  25.             //// Visualizzo nelle pictureBox le immagini ruotate
  26.             int conta = 0;
  27.             for (int i = Controls.Count - 1; i >= 0; i--)
  28.             {
  29.                 if (Controls[i].GetType() == typeof(PictureBox))
  30.                 {
  31.                     //Così
  32.                     Controls[i].BackgroundImage = Immagini[conta].img;
  33.                     Controls[i].Tag = Immagini[conta].riferimento;
  34.                     conta++;
  35.                 }
  36.             }
  37.         }





Al click sulle pictureBox;


Codice sorgente - presumibilmente C# / VB.NET

  1. private void pictureBox1_Click(object sender, EventArgs e)
  2.         {
  3.  
  4.        label1.Text = pictureBox1.Tag.ToString(); //Applico il testo recuperato dal tag.
  5.  
  6.  }




In questo modo dovrebbe funzionarti.
In pratica le pictureBox hanno un campo nelle proprietà chiamato Tag.
in quel campo puoi scriverci riferimenti o qualcosa su cui tenere a memoria.
anche un appunto esempio.

Quando scorri, devi fare in modo di applicare ad ogni pictureBox il suo relativo Tag recuperato dalla struttura.
Così al Click, verrà mostrato il Tag che la pictureBox contiene.

Puoi anche crearti un controllo ereditato ed inserire quanti campi ti fanno comodo.

oppure al tag puoi aggiungere un separatore di stringa,
e splittare il contenuto per poi recuperare un array.

esempio:

Codice sorgente - presumibilmente Plain Text

  1. Tag = "Frase 1|Frase 2|Frase 3";
  2.  
  3. string[] t = Tag.Split('|');
  4.  
  5. label1.text = t[0];
  6. label2.text = t[1];
  7. label3.text = t[2];





https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo