Documentos de Académico
Documentos de Profesional
Documentos de Cultura
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
public Form1()
InitializeComponent();
pictureBox1.Image = Image.FromFile("c:\\testImage.jpg");
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
Control PictureBox se utiliza para mostrar imágenes en Windows Forms. En este artículo, voy a discutir
cómo utilizar un control PictureBox para mostrar imágenes en aplicaciones de Windows Forms.
Clase PictureBox representa un control PictureBox. El siguiente fragmento de código crea un cuadro de
imagen, fija su anchura y altura y añade control al formulario llamando al método Controls.Add ().
C # Código:
Propiedad de la imagen se utiliza para establecer una imagen para que se muestre en un control
PictureBox. El siguiente fragmento de código crea un mapa de bits de una imagen y establece la
propiedad Image del control PictureBox. Código también establece la propiedad Muelle de PictureBox.
C # Código:
PictureBoxImg1.jpg
SizeMode
Propiedad SizeMode se utiliza para colocar una imagen dentro de un cuadro de imagen. Puede ser
normal, StretchImage, AutoSize, CenterImage y Zoom. El siguiente fragmento de código establece la
propiedad SizeMode de un control PictureBox.
C # Código:
imageControl.SizeMode = PictureBoxSizeMode.CenterImage;
Código VB.NET:
imageControl.SizeMode = PictureBoxSizeMode.CenterImage
Sumario
En este artículo, discutimos discutir cómo utilizar un control PictureBox para mostrar imágenes en
aplicaciones de Windows Forms.
Ç
PictureBox es que cuando alguien instala tu aplicación, al tratar de modificar
usuarios van a obtener errores de “fichero bajo uso por otro usuario” y “error GDI+
funciona, y aparte dice que lo que ocurre es “de acuerdo al diseño.” Ignorando la
error en la implementación.
Si hacemos una búsqueda para este problema, pueden ver varios arreglos
propuestos:
recolector de basura
Hacer una copia del objeto Image antes de asignarlo al control PictureBox(.NET
Usar Image.Clone() para hacer una copia del objeto Image antes de asignarlo al
PictureBox
Hay muchísimas páginas y foros en el internet acerca de este problema, y los leí
error en Windows desde los días de VB6, asi que no tiene caso esperar a que
Microsoft lo arregle.
funcionó para mi: Abrir el archivo que contiene la imagen, y de la manera más
indirecta posible, asignar los contenidos al objeto Image que vas a usar para
mostrar la imagen en el PictureBox. Haz lo mismo cuando vas a salvar una imagen.
Si no mezclas objetos Image con acceso a archivos todos van a estar felices y sin
errores.
byte
o Convierte ese arreglo de byte a un objeto Image, la conversión detectara cual
siguiente…
?
1
2
3 public static Image NonLockingOpen(string filename) {
Image result;
4
5 #region Save file to byte array
6
7 long size = (new FileInfo(filename)).Length;
8 FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
9 byte[] data = new byte[size];
try {
10 fs.Read(data, 0, (int)size);
11 } finally {
12 fs.Close();
13 fs.Dispose();
14 }
15
#endregion
16
17 #region Convert bytes to image
18
19 MemoryStream ms = new MemoryStream();
20 ms.Write(data, 0, (int)size);
21 result = new Bitmap(ms);
ms.Close();
22
23
#endregion
24
25 return result;
26 }
27
28
Para escribir el archivo:
?
1 public static void NonLockingSave(Image img, string fn, ImageFormat format) {
// Delete destination file if it already exists
2 if (File.Exists(fn))
3 File.Delete(fn);
4
5 try {
6
7 #region Convert image to destination format
8
9 MemoryStream ms = new MemoryStream();
Image img2 = (Image)img.Clone();
10 img2.Save(ms, format);
11 img2.Dispose();
12 byte[] byteArray = ms.ToArray();
13 ms.Close();
14 ms.Dispose();
15
#endregion
16
17 #region Save byte array to file
18
19 FileStream fs = new FileStream(fn, FileMode.CreateNew, FileAccess.Write);
20
21
22
try {
23
fs.Write(byteArray, 0, byteArray.Length);
24 } finally {
25 fs.Close();
26 fs.Dispose();
27 }
28
#endregion
29
30 } catch {
31 // Delete file if it was created
32 if (File.Exists(fn))
33 File.Delete(fn);
34
35 // Re-throw exception
throw;
36 }
37 }
38
39
40
Finalemente, aqui hay un método de extension que puede ayudarte:
?
1 public static void SaveViaStreams(this Image img, string fn, ImageFormat format) {
2 NonLockingSave(img, fn, format);
3 }
Una vez que usé estos métodos para abriy y grabar mis archivos, todos mis errores
3.3.- Cambiar la propiedad “text” para cambiar el texto del botón, en este caso
se cambio a “Cargar Imagen” (figura 5).
4.3.- Para cambiar el modo de visualización, seleccionar el objeto “PictureBox” creado en la interfaz y
dar clic en la flecha que se encuentra en la esquina superior derecha. En la opción “Size Mode”
5.- Dar doble clic sobre el botón agregado y escribir dentro del evento
generado el siguiente código:
1
2 try
3 {
if (openFileDialog1.ShowDialog() == DialogResult.OK)
4 {
5 string imagen = openFileDialog1.FileName;
6 pictureBox1.Image = Image.FromFile(imagen);
7 }
}
8
catch (Exception ex)
9 {
10 MessageBox.Show("El archivo seleccionado no es un tipo de imagen válido");
11 }
12
6.- Para finalizar, probar el programa con diferentes modos de visualización
hasta encontrar el adecuado para su aplicación (Paso 4.3).
Explicación del código:
La linea de código openFileDialog1.ShowDialog(), abre el explorador de