2009-09-14 7 views
1

Comment naviguer dans l'image à l'aide des touches fléchées du clavier en C#.Navigation dans l'image

Ma 1re forme contient listView. Listview contient 10 images en format miniature. Les images proviennent du dossier perticular. Lorsque je double-clique sur l'image dans la liste, son ouverture dans une nouvelle fenêtre en tant que grande image. Je veux naviguer dans l'image dans la nouvelle fenêtre selon l'ordre de listview.

Si je clique sur l'image de manière aléatoire, je veux naviguer dans l'image à partir de cette image sélectionnée.

Cela ressemble à un gestionnaire d'image Microsoft.

Donnez-moi une idée.

+0

Je suppose que vous faites référence à WinForm? Ajoutez un gestionnaire d'événement pour l'événement de raccourci clavier pour votre formulaire et modifiez la source d'image comme vous le souhaitez. Je n'ai pas posté cela comme réponse parce que ce n'est pas assez détaillé et précis. Vous devrez peut-être ajouter plus de manipulation du changement d'image si les tailles sont différentes. –

Répondre

2

Définissez la propriété KeyPreview de votre formulaire sur True. Ensuite, ajoutez cette ligne de code en haut de votre fichier CS:

using System.IO; 

Ensuite, dans le cadre de votre formulaire, ajoutez ces deux lignes:

private FileInfo[] _files; 
private int _currentFile; 

Dans le cas de charge de votre formulaire, mettez ce Code:

DirectoryInfo dirinfo = new DirectoryInfo(
    Path.Combine(Application.StartupPath, "images")); 
_files = dirinfo.GetFiles(); 
_currentFile = 0; 
Bitmap bmp = (Bitmap)Bitmap.FromFile(_files[_currentFile].FullName); 
pictureBox1.Image = bmp; 

Enfin, dans le cas KeyDown de votre formulaire, mettez ce code:

if (e.KeyCode == Keys.Down) 
{ 
    _currentFile--; 
    if (_currentFile < 0) 
    { 
     _currentFile = _files.Length - 1; 
    } 
} 
else if (e.KeyCode == Keys.Up) 
{ 
    _currentFile++; 
    if (_currentFile >= _files.Length) 
    { 
     _currentFile = 0; 
    } 
} 

Bitmap bmp = (Bitmap)Bitmap.FromFile(_files[_currentFile].FullName); 
if (pictureBox1.Image != null) 
{ 
    pictureBox1.Image.Dispose(); 
} 
pictureBox1.Image = bmp; 

Ce code suppose que vous avez un PictureBox sur votre formulaire nommé "pictureBox1", et il suppose que vous avez un dossier nommé "\ images" dans votre dossier d'application qui contient les fichiers d'image que vous souhaitez afficher.

En tant que brebis. mentionné dans un commentaire, vous souhaiterez peut-être améliorer ce code en redimensionnant le PictureBox pour qu'il corresponde aux dimensions du fichier image. Vous pouvez le faire en définissant la propriété SizeMode de votre PictureBox à AutoSize (ou définissez-le à CenterImage, si vous souhaitez conserver l'image globale centrée sur votre formulaire).

+0

Merci beaucoup Musi – nithi

+0

@vijaii: de rien. Lorsque vous obtenez une réponse à une question, il est habituel de la sélectionner comme réponse correcte (cliquez sur la coche). – MusiGenesis

+0

un de plus Doubt Musi, Ur code précédent fonctionne parfaitement, mais un problème est là, s'il vous plaît vérifier ma récente question éditée. Lorsque je double-clique sur l'image dans la vue de liste, son ouverture dans une nouvelle fenêtre en tant que grande image. Je veux naviguer dans l'image dans la nouvelle fenêtre selon l'ordre de listview. plz donnez-moi une idée. – nithi