Foros del Web » Programación para mayores de 30 ;) » .NET »

no se me redibuja

Estas en el tema de no se me redibuja en el foro de .NET en Foros del Web. hola tengo una simple ventana en la k solo hay un boton y un picturebox. cuando se inicia el programa, el picturebox está vacio y ...
  #1 (permalink)  
Antiguo 15/09/2005, 18:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 20 años, 6 meses
Puntos: 0
no se me redibuja

hola

tengo una simple ventana en la k solo hay un boton y un picturebox. cuando se inicia el programa, el picturebox está vacio y cuando se le dá al boton este dibuja unas cosas en el picturebox........
el problema es k cuando minimizo esta ventana o keda tapada x otro programa y vuelvo a seleccionarla desaparece el dibujo........... como puedo solucionar esto??????????????
  #2 (permalink)  
Antiguo 16/09/2005, 18:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 20 años, 6 meses
Puntos: 0
intenté evitar k dibujase en el evento Paint del picturebox, pq al ejecutar el programa keria k este picturebox estubiera vacio..... pero al final me he visto obligao a usarlo

Código:
bool pulsado;
private void Dibujar(Graphics Dibujo) 
{
	//Aqui es donde se hace el dibujo dependiendo de ciertos valores introducidos en un textbox
	//No he puesto el codigo xq era largo y no era necesario para mi pregunta

}
private void button1_Click(object sender, System.EventArgs e)
{
	pulsado = true;
	Graphics Dibujo = pictureBox1.CreateGraphics();
	Dibujar(Dibujo);
}
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
	if(pulsado) 
	{
		Graphics Dibujo = e.Graphics;
		Dibujar(Dibujo);
	}
}

k os parece, voy bien? pq funcionar funciona excepto x un problema... :(

kuando se ejecuta el programa no aperece nada (ya k la variable pulsado vale false). Al pulsar el boton aparece el dibujo. Al minimizar este dibujo dibujado x el evento Click del boton se destruye...... de manera k al maximizar o restaurar la ventana, el dibujo se vuelve a dibujar a causa del evento Paint del picturebox............. pero cuando le doy al boton despues de haber restaurado la ventana se me sobreponen los dos dibujos..... el creado por Paint y por Click........
(si no cambio el valor del textbox se ve bien... pq los dos dibujos son exactos y uno encima del otro no se nota... pero al cambiar el valor y hacer click se ve el nuevo dibujo (k es distinto) encima del dibujo del evento Paint) :(

de k manera puedo solucionar esto? como podria destruir el objeto Graphics del evento Paint al hacer Click?

o si no decidme alguna otra manera de hacer lo k pedia inicialmente

Última edición por cards; 17/09/2005 a las 07:55
  #3 (permalink)  
Antiguo 17/09/2005, 07:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 20 años, 6 meses
Puntos: 0
al final lo he solucinado..........
he echo k solo dibujase en el evento paint, y k al hacer click se actualizara el picturebox (un refresh) de manera k al hacer el refresh se invoca automaticamente al evento paint para actualizar el picturebox.....
mira k era sencillo.... y lo k me ha acostao solucionarlo...

Código:
bool pulsado;
private void Dibujar(Graphics Dibujo) 
{
	//Aqui es donde se hace el dibujo dependiendo de ciertos valores introducidos en un textbox
	//No he puesto el codigo xq era largo y no era necesario para mi pregunta

}
private void button1_Click(object sender, System.EventArgs e)
{
	pulsado = true;
	pictureBox1.Refresh();
}
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
	if(pulsado) 
	{
		Dibujar(e.Graphics);
	}
}
bueno, solucionao.... mucho foro pero nadie ayuda....

existe alguna otra manera en la k no haga falta utilizar el evento paint?
aun no entiendo vien el funcionamiento de Dispose() y Invalidate()....... hace falta k lo ponga en este codigo? o no hace falta ya k es un dibujo k va cambiando?

(espero k ahora alguien se digne a ayudarme ¬¬ ...... pq este post se esta conviritiendo en un monologo)
  #4 (permalink)  
Antiguo 17/09/2005, 09:04
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 20 años, 6 meses
Puntos: 0
mejor todavia

weno.... xfin he encontrado exactamente lo k queria, sin utilizar el evento paint.

se tiene k crear un bitmap, dibujar en él, y luego mostrar el bitmap en el picturebox...

ya ke al mostrar un bitmap en un picturebox este no desaparece cuando se minimiza o keda tapado x otra ventana..... siempre se verá esa imagen. Incluso si cambias de tamaño la ventana encogiendola y agrandandola otra vez, se muestra el dibujo instantaneamente.

Código:
private void Dibujar(Graphics Dibujo) 
{
	//Aqui es donde se hace el dibujo dependiendo de ciertos valores introducidos en un textbox
	//No he puesto el codigo xq era largo y no era necesario para mi pregunta

}
private void button1_Click(object sender, System.EventArgs e)
{
	Bitmap Imagen = new Bitmap(pictureBox1.Width, pictureBox1.Height);
	Graphics Dibujo = Graphics.FromImage(Imagen);
	Dibujar(Dibujo);
	pictureBox1.Image = Imagen;
	Dibujo.Dispose();
}
weno........ al final se ha podido hacer XD

vine buscando ayuda y al final la aporto yo :P espero k le sea util para la gente k le pasaba lo k a mí :)

los de mocosoft han echo muy complicao esto de redibujar no?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:07.