previous and next button

  • Onderwerp starter Onderwerp starter taan
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

taan

Gebruiker
Lid geworden
12 dec 2008
Berichten
14
ik wil 2 buttons linke aan een picturebox waarin 4 foto's inzitten..

de eerste button moet een previous button zijn en de andere nextbutton..

dees heb ik al:

private void vorigeButton_Click(object sender, EventArgs e)
{
vorigeImage();
}
const int DELER = 2;
private void showImage(string path)
{
//instellen van volgende eigenschappen
Image imgtemp = Image.FromFile(path);
photoPictureBox.Width = imgtemp.Width / DELER;
photoPictureBox.Height = imgtemp.Height / DELER;
photoPictureBox.Image = imgtemp;
}
private string[] folderFile = null;
private int selected = 0;
private void vorigeImage()
{
if (selected == 0)
{
selected = folderFile.Length - 1;
showImage(folderFile[selected]);
}
else
{
selected = selected - 1;
showImage(folderFile[selected]);
}
}
 
Hey,

ik snap het niet helemaal denk ik...
Je hebt een variababele genaamd folderFile.
Ik neem aan dat daar de bestanden in moeten die weergegeven worden.
En er is 1 picturebox, waarin de foto's om en om weergegeven moeten worden.

Klopt dit?

En de foto's, moeten die gezocht worden in een map, of wil je iets anders...

Gr,
Mathijs
 
Hey,

ik snap het niet helemaal denk ik...
Je hebt een variababele genaamd folderFile.
Ik neem aan dat daar de bestanden in moeten die weergegeven worden.
En er is 1 picturebox, waarin de foto's om en om weergegeven moeten worden.

Klopt dit?

En de foto's, moeten die gezocht worden in een map, of wil je iets anders...

Gr,
Mathijs

de foto's zitten eigenlijk al in de picturebox en die foto's(const) moeten dan om en om weergegeven worden via die 2 buttons...

grts
 
public partial class Photo : Form
{
private Image[] imagesLijst;
private int selected = 0;
private int begin = 0;
private int end = 0;

public Photo()
{
InitializeComponent();
}

private void showImage(string path)
{
Image imgTemp = Image.FromFile(path);
imagePictureBox.Width = imgTemp.Width / 2;
imagePictureBox.Height = imgTemp.Height / 2;
imagePictureBox.Image = imgTemp;
}
private void prevImage()
{
if (selected == 0)
{
selected = imagesLijst.Length - 1;
showImage(imagesLijst[selected]);
}
else
{
selected = selected - 1;
showImage(imagesLijst[selected]);
}
}
private void nextImage()
{
if (selected == imagesLijst.Length - 1)
{
selected = 0;
showImage(imagesLijst[selected]);
}
else
{
selected = selected + 1;
showImage(imagesLijst[selected]);
}
}

ik wou het zo doen, maar hier zit ik vast..

grts
 
Hey,

ik zie zo een fout..
Je hebt een variabele:
private Image[] imagesLijst;

Dit is zoals er staat een Image array.
Bij de methode Next en Previous roep je de methode showImage() op met als parameter een Image.
Maar de methode showImage() verwacht een string.. En dus een locatie.

Je kunt de
private Image[] imagesLijst;
vervangen door
private string[] imagesLijst;
en daar moeten locaties in van de foto's.

Of je veranderd showImage naar:
Code:
private void showImage(Image img)
{
    imagePictureBox.Width = img.Width / 2;
    imagePictureBox.Height = img.Height / 2;
    imagePictureBox.Image = img;
}
en zet de afbeeldingen vooraf in de Array imagesLijst.

Ik raad de eerste methode aan.

Gr,
Mathijs
 
Hey,

ik zie zo een fout..
Je hebt een variabele:
private Image[] imagesLijst;

Dit is zoals er staat een Image array.
Bij de methode Next en Previous roep je de methode showImage() op met als parameter een Image.
Maar de methode showImage() verwacht een string.. En dus een locatie.

Je kunt de
private Image[] imagesLijst;
vervangen door
private string[] imagesLijst;
en daar moeten locaties in van de foto's.

Of je veranderd showImage naar:
Code:
private void showImage(Image img)
{
    imagePictureBox.Width = img.Width / 2;
    imagePictureBox.Height = img.Height / 2;
    imagePictureBox.Image = img;
}
en zet de afbeeldingen vooraf in de Array imagesLijst.

Ik raad de eerste methode aan.

Gr,
Mathijs

thx ik ga da is proberen..
 
thx ik ga da is proberen..

Ik heb mijn Image[] ImageList veranderd in string[] ImageList zoals in de volgende code:

public Photo()
{
InitializeComponent();
imagesLijst = new string[4];
imagesLijst[0] = Image.FromFile(@"\..\pic1.jpg");
imagesLijst[1] = Image.FromFile(@"\..\..\pic2.jpg");
imagesLijst[2] = Image.FromFile(@"\..\..\pic3.jpg");
imagesLijst[3] = Image.FromFile(@"\..\..\pic4.jpg");

}

private void showImage(string path)
{
Image imgTemp = Image.FromFile(path);
imagePictureBox.Width = imgTemp.Width / 2;
imagePictureBox.Height = imgTemp.Height / 2;
imagePictureBox.Image = imgTemp;
}

maar nu krijg ik enkel de fout : Error 1 Cannot implicitly convert type 'System.Drawing.Image' to 'string'


grts
 
Klop,
imagesLijst[0] = Image.FromFile(@"\..\pic1.jpg");
Hier ga je een plaatje laden vanuit een locatie, en die Image die je krijgt wil je in een string object zetten. Dat kan niet

dit gaat wel:
Code:
imagesLijst = new string[4];
imagesLijst[0] = @"\..\pic1.jpg";
imagesLijst[1] = @"\..\..\pic2.jpg";
imagesLijst[2] = @"\..\..\pic3.jpg";
imagesLijst[3] = @"\..\..\pic4.jpg";

Alleen omdat e \..\..\ enz. gebruikt, weet ik niet of het werkt.
Want dat wordt volgens mij niet ondersteund.
Dan moet je Path.GetFullPath() gebruiken.

Dus:
Code:
imagesLijst = new string[4];
imagesLijst[0] = Path.GetFullPath(@"..\pic1.jpg");
imagesLijst[1] = Path.GetFullPath(@"..\..\pic2.jpg");
imagesLijst[2] = Path.GetFullPath(@"..\..\pic3.jpg");
imagesLijst[3] = Path.GetFullPath(@"..\..\pic4.jpg");

Ooh ja, je moet boven in onder de laatste using de volgende regel toevoegen:
Code:
using System.IO;

Gr,
Mathijs
 
Klop,
imagesLijst[0] = Image.FromFile(@"\..\pic1.jpg");
Hier ga je een plaatje laden vanuit een locatie, en die Image die je krijgt wil je in een string object zetten. Dat kan niet

dit gaat wel:
Code:
imagesLijst = new string[4];
imagesLijst[0] = @"\..\pic1.jpg";
imagesLijst[1] = @"\..\..\pic2.jpg";
imagesLijst[2] = @"\..\..\pic3.jpg";
imagesLijst[3] = @"\..\..\pic4.jpg";

Alleen omdat e \..\..\ enz. gebruikt, weet ik niet of het werkt.
Want dat wordt volgens mij niet ondersteund.
Dan moet je Path.GetFullPath() gebruiken.

Dus:
Code:
imagesLijst = new string[4];
imagesLijst[0] = Path.GetFullPath(@"..\pic1.jpg");
imagesLijst[1] = Path.GetFullPath(@"..\..\pic2.jpg");
imagesLijst[2] = Path.GetFullPath(@"..\..\pic3.jpg");
imagesLijst[3] = Path.GetFullPath(@"..\..\pic4.jpg");

Ooh ja, je moet boven in onder de laatste using de volgende regel toevoegen:
Code:
using System.IO;

Gr,
Mathijs

Thx!

stom van mij, da wist ik nog van die fromfile, maar had er gewoon overgekeken..

maar die images moeten toch op deze manier in de picturebox te zien zijn? en met de 2buttons (previous en next) weergegeven worden?

grts
 
Heb jij nog geen formulier dan?

In visual studio (express) kun je een formulier toevoegen.
Dit formulier kun je bekijken en dan ken je er knoppen en pictureboxes aan toevoegen.
Vervolgens kun je aan de knoppen een functie toevoegen door er op dubbel te klikken.

Gr,
Mathijs
 
Heb jij nog geen formulier dan?

In visual studio (express) kun je een formulier toevoegen.
Dit formulier kun je bekijken en dan ken je er knoppen en pictureboxes aan toevoegen.
Vervolgens kun je aan de knoppen een functie toevoegen door er op dubbel te klikken.

Gr,
Mathijs

hoe kan ik zorgen dat de ene button gedissabled staat wanneer die niet gebruikt kan worden?

kan ik dat binnen mijn constructor doen?

if (imageLijst == 0)
prevButton = false
?
 
Laatst bewerkt:
Hey,

aan de melding te zien heb jij geen foto's in de desbetreffende map.
Zet de foto's eens op de C: schijf
daar heten ze dan pic1.jpg tot pic4.jpg
dan stel je de lijstArray in met de volgende waardes:
Code:
imagesLijst[0] = @"C:\pic1.jpg";
imagesLijst[1] = @"C:\pic2.jpg";
imagesLijst[2] = @"C:\pic3.jpg";
imagesLijst[3] = @"C:\pic4.jpg";

Dan werkt het wel, maar natuurlijk als je je project compileerd, en op een adere pc zet niet meer.

De beste methode is om de imageLijst zo te maken:
Code:
imagesLijst[0] = Path.GetFullPath(@".\images\pic1.jpg");
imagesLijst[1] = Path.GetFullPath(@".\images\pic2.jpg");
imagesLijst[2] = Path.GetFullPath(@".\images\pic3.jpg");
imagesLijst[3] = Path.GetFullPath(@".\images\pic4.jpg");
Dan voeg je aan het project van jou een nieuwe map toe aan de solution explorer.
Die laat je images heten. Zet hier jouw 4 foto's in.
Vervolgens selecteer je de 4 foto's en verander je in de Properties window de volgende waardes:
Build action: none
en
Copy to output directory: copy always.

En nu worden jouw 4 foto's bij het programma geplaatst, en zal het eigenlijk altijd werken.

Succes,
Mathijs
 
Hey,

aan de melding te zien heb jij geen foto's in de desbetreffende map.
Zet de foto's eens op de C: schijf
daar heten ze dan pic1.jpg tot pic4.jpg
dan stel je de lijstArray in met de volgende waardes:
Code:
imagesLijst[0] = @"C:\pic1.jpg";
imagesLijst[1] = @"C:\pic2.jpg";
imagesLijst[2] = @"C:\pic3.jpg";
imagesLijst[3] = @"C:\pic4.jpg";

Dan werkt het wel, maar natuurlijk als je je project compileerd, en op een adere pc zet niet meer.

De beste methode is om de imageLijst zo te maken:
Code:
imagesLijst[0] = Path.GetFullPath(@".\images\pic1.jpg");
imagesLijst[1] = Path.GetFullPath(@".\images\pic2.jpg");
imagesLijst[2] = Path.GetFullPath(@".\images\pic3.jpg");
imagesLijst[3] = Path.GetFullPath(@".\images\pic4.jpg");
Dan voeg je aan het project van jou een nieuwe map toe aan de solution explorer.
Die laat je images heten. Zet hier jouw 4 foto's in.
Vervolgens selecteer je de 4 foto's en verander je in de Properties window de volgende waardes:
Build action: none
en
Copy to output directory: copy always.

En nu worden jouw 4 foto's bij het programma geplaatst, en zal het eigenlijk altijd werken.

Succes,
Mathijs

thx!

ik heb zeker al wa bijgeleerd!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan