Podemos realizar el efecto creando un formulario sin borde maximizado y con la imagen a mostrar como fondo.
La imagen a pantalla completa se cierra al hacer click sobre ella. Para ello añadiremos un controlador de eventos al evento Click del formulario que simplemente cerrará el formulario:
private void FullScreenImage(Image imageToShow) { Form fullScreenForm = new Form() { WindowState = FormWindowState.Maximized, FormBorderStyle = FormBorderStyle.None, BackgroundImage=imageToShow, BackgroundImageLayout= ImageLayout.Zoom }; fullScreenForm.Click += fullScreen_Click; fullScreenForm.ShowDialog(); } private void fullScreen_Click(object sender, EventArgs e) { ((Form)sender).Close(); }
Private Sub FullScreenImage(imageToShow As Image) Dim fullScreenForm As New Form With { .WindowState = FormWindowState.Maximized, .FormBorderStyle = FormBorderStyle.None, .BackgroundImage = imageToShow, .BackgroundImageLayout = ImageLayout.Zoom } AddHandler fullScreenForm.Click, AddressOf fullScreen_Click fullScreenForm.ShowDialog() End Sub Private Sub fullScreen_Click(sender As Object, e As EventArgs) CType(sender, Form).Close() End Sub
Por ejemplo podríamos hacer que al hacer doble click sobre un PictureBox la imagen de éste se mostrase a pantalla completa simplemente añadiendo un controlador al evento DoubleClick del PictureBox:
private void pictureBox1_DoubleClick(object sender, EventArgs e) { FullScreenImage(((PictureBox)sender).Image); }
Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick FullScreenImage(CType(sender, PictureBox).Image) End Sub
Hola, Asier, le comento que le deje una contra consulta a una mia, por Ud. respondida, en el foro de c# del dia de ayer y antes de ayer, en el cual le consultaba sobre como podia cambiarle el estado a un TextBox.Enable = false que esta en un formulario, a TextBox.Enable = true en un segundo formulario, sugiriendome Ud. que pase un valor por querystring, no entendiendo bien a lo que se refiere.......Le recuerdo ello, mil gracias, disculpe las molestias, espero su respuesta alla......
ResponderEliminarHola Guillermo. Ya te he contestado en el foro de msdn.
EliminarUn saludo
se pudiera despues de abrir la imagen poder hacer zoom con el scroll asi como lo hace el visualizador de imágenes de windows?
ResponderEliminarEntiendo que te refieres a la rueda del ratón ¿no?
ResponderEliminarasi es!
EliminarSe complicaría un poco más.
EliminarHabría que añadir un PictureBox al formulario y controlar su tamaño y posición en el evento MouseWheel.
Además habría que añadir un controlador para el evento Load del form (para dimensionar incialmente el PictureBox) y para el click del PictureBox para cerrar el formulario.
Algo así:
private void FullScreenImage(Image imageToShow)
{
var fullScreenForm = new Form()
{
WindowState = FormWindowState.Maximized,
FormBorderStyle = FormBorderStyle.None,
};
var picture = new PictureBox()
{
Image = imageToShow,
SizeMode = PictureBoxSizeMode.Zoom
};
fullScreenForm.Controls.Add(picture);
fullScreenForm.Load += fullScreen_Load;
fullScreenForm.Click += fullScreen_Click;
picture.Click += fullScreen_Click;
fullScreenForm.MouseWheel += fullScreen_MouseWheel;
fullScreenForm.ShowDialog();
}
private void fullScreen_Load(object sender, EventArgs e)
{
var form = (Form) sender;
var pic = form.Controls.OfType()
.First();
pic.Location = new Point(0, 0);
pic.Size = new Size(form.Width, form.Height);
}
private void fullScreen_MouseWheel(object sender, MouseEventArgs e)
{
var form = (Form)sender;
var pic = form.Controls.OfType()
.First();
var incWidth = (int) (pic.Width*0.05);
var incHeight = (int) (pic.Height*0.05);
pic.Width += e.Delta < 0 ? -incWidth : incWidth;
pic.Height += e.Delta < 0 ? -incHeight : incHeight;
pic.Location = new Point(
(form.Width - pic.Width)/2,
(form.Height - pic.Height)/2
);
}
private void fullScreen_Click(object sender, EventArgs e)
{
var form = ((Control) sender).FindForm();
form?.Close();
}
Hola Asier
ResponderEliminarComo haría si le quiero pasar una ruta donde se encuentra la imgaen asi como esta:
private string ruta = Path.Combine(Application.StartupPath, @"ImagenesForm\Moda.png");