PictureBox в Windows Forms - Как открыть изображение, нажав на него, чтобы увидеть его в полном разрешении - PullRequest
0 голосов
/ 13 сентября 2018

Как создать простое слайд-шоу с элементом PictureBox.Теперь я хотел бы открыть изображение, щелкнув по нему, чтобы увидеть его в полном разрешении - с приложением по умолчанию, которое связано с файлами .jpg (например, Microsoft Photos).Я думаю, что событие клика на PictureBox было бы хорошим способом, но я не знаю, какой код добавить.Не могу найти хороший пример в интернете.

Следуя коду, который я использую до сих пор:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Diashow
{
    public partial class Form1 : Form
    {
        private string[] folderFile = null;
        private int selected = 0;
        private int begin = 0;
        private int end = 0;

    public Form1()
    {
        InitializeComponent();
        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
        folderBrowserDialog1.SelectedPath = @"E:\MiscTest\";
        timer1.Interval = 5000;
    }

    private void btnOpen_Click(object sender, EventArgs e)
    {
        if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
        {
            string[] part1 = null, part2 = null, part3 = null;
            part1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpg");
            part2 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpeg");
            part3 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.tif");
            folderFile = new string[part1.Length + part2.Length + part3.Length];
            Array.Copy(part1, 0, folderFile, 0, part1.Length);
            Array.Copy(part2, 0, folderFile, part1.Length, part2.Length);
            Array.Copy(part3, 0, folderFile, part1.Length + part2.Length, part3.Length);
            selected = 0;
            begin = 0;
            end = folderFile.Length;
            showImage(folderFile[selected]);

            btnPrevious.Enabled = true;
            btnNext.Enabled = true;
            bntSlideshow.Enabled = true;
        }
    }

    private void showImage(string path)
    {
        Image imgtemp = Image.FromFile(path);
        pictureBox1.Image = imgtemp;

    }

    private void btnNext_Click(object sender, EventArgs e)
    {
        if (selected == folderFile.Length - 1)
        {
            selected = 0;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected + 1; showImage(folderFile[selected]);
        }
    }

    private void btnPrevious_Click(object sender, EventArgs e)
    {
        if (selected == 0)
        {
            selected = folderFile.Length - 1;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected - 1; showImage(folderFile[selected]);
        }
    }

    private void nextImage()
    {
        if (selected == folderFile.Length - 1)
        {
            selected = 0;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected + 1; showImage(folderFile[selected]);
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (pictureBox1.Image != null)
        {
            pictureBox1.Image.Dispose();
        }
        nextImage();
    }

    private void bntSlideshow_Click(object sender, EventArgs e)
    {
        if (timer1.Enabled == true)
        {
            timer1.Enabled = false;
            bntSlideshow.Text = "START Slideshow";
        }
        else
        {
            timer1.Enabled = true;
            bntSlideshow.Text = "STOP Slideshow";
        }
    }
    }
}
...