Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con evento paint en visual c++ 2005

Estas en el tema de problema con evento paint en visual c++ 2005 en el foro de C/C++ en Foros del Web. Ok ya estaba digamos cuadrando el codigo para la visualizacion de resultados: Cree un formulario para ver los mapas de propiedades y graficas cree el ...
  #1 (permalink)  
Antiguo 11/09/2006, 17:40
 
Fecha de Ingreso: julio-2006
Mensajes: 47
Antigüedad: 17 años, 9 meses
Puntos: 0
problema con evento paint en visual c++ 2005

Ok ya estaba digamos cuadrando el codigo para la visualizacion de resultados:
  • Cree un formulario para ver los mapas de propiedades y graficas
  • cree el evento paint y lo asocie al picturebox donde voy a dibujar según consejo de nivel 7
  • cree la barra de tareas en el formulario para las opciones de grabar imagen e imprimirla
  • Cree el objeto dialogosave y lo agrege a su correspondiente en la barra de tareas
  • todas las rutas de directorio las estoy manejando con getcurrentdirectory y le anexo los directororios de trabajo

Lo primero qe hice qe no dio problemas fue llamar el evento paint en el load del formulario, para ese momento no tenia creado lo del dialogsave. Funciono perfecto, para cambiar las imagen en este momento cerraba el formulario, mandaba a generar una malla con otra geometria y volvia a abrir el formulario para ver la nueva imagen, claro eso asi no tiene ciencia.

Al agregar el savedialog, entre en el formulario vi la imagen y le di en la barra de tareas grabar imagen.... murio la cosa, da un error en el evento paint al momento de buscar la ruta y el nombre del archivo, por lo qe pude ver al asignar el directorio de trabajo para el dialogsave en resultados se esta cambiando el directorio de trabajo a ese directorio entonces se ejecuta el evento paint no se porqe... y claro falla porqe se esta metiendo en una ruta qe no existe.

Me imagine qe quizas era porque llamaba al evento paint en el load del formulario, lo coloque con un boton(perdi todo un tiempo,ya qe no se mostraba la imagen en el formulario hasta qe vi qe tenia qe usar refresh en el picturebox).

Al abrir el dialogsave se tranca con el mismo error, sin embargo probe entrar al dialogsave sin darle al boton qe carga la imagen y asi no falla.


La pregunta de las mil lochas.... jajaja: cuando se llama un evento paint y se qeda siempre actualizando la imagen?, se me habia ocurrido simplemente en el evento paint usar setcurrentdirectory pero nose como colocarle la ruta, pense qe si podia agregarle directorios usando +"\\directorio\\" podia usar - para borrar jajaja y me dijo qe nada de aritmetica sin embargo la suma tambien lo es... en fin...

la ruta del programa va a ser variable, depende de donde el usuario lo instale por eso he usado puro currentdirectory qe me da la ruta de trabajo actual.

el siguiente codigo esta en el evento paint y la linea en negrilla es donde falla, el dialogsave esta en currentdirectory\archivos resultados y al momento de ejecutarse el evento paint qeda asi

currentdirectory\archivos resultados\archivos de proyecto\general.log y eso no existe tengo qe ver como elimino ese archivos resultados qe me imagino se lo mete el dialogsave

String^ nombre;
String^ ubicacion_nombre= Directory::GetCurrentDirectory()+"//Archivos de Proyecto//general.log";

StreamReader^ read= File::OpenText (ubicacion_nombre);
nombre= read->ReadLine();
delete (IDisposable^)read;
StreamReader^ sr= File::OpenText (Directory::GetCurrentDirectory()+"//Archivos de Resultados//"+nombre+".tmp");
int cantidad;
cantidad=Int32::Parse(sr->ReadLine());

codigo del dialogsave:

SaveFileDialog^ guardar_imagen = gcnew SaveFileDialog;

guardar_imagen->InitialDirectory = Directory::GetCurrentDirectory()+"\\Archivos de Resultados\\";
guardar_imagen->Filter = "Bitmap (*.bmp)|*.bmp| Jpeg (*.jpeg)|*.jpeg";
guardar_imagen->FilterIndex = 1;
guardar_imagen->RestoreDirectory = true;
guardar_imagen->Title= "Guardar Imagenes Generadas por el Proyecto";

Cualquier sugerencia?, por cierto es usando codigo .net puro.
Algo qe pense fue crear otro archivo de texto jajaja colocarlo como oculto y almacenar ahi la ruta de acceso del programa, sino sale otra cosa sera hacer eso...

Gracias.
  #2 (permalink)  
Antiguo 11/09/2006, 18:04
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
La verdad no comprendo muy, bien, si estas usando dialogos comunes, por que no dejas los nombres y direcctorios a eleccion del usuario.

otra cosa es que este trabajo no tienen por que estar en el evento paint.
sino en el evento del boton o menu que muestre los Dialogos.


siempre que manejes graficos, lo ideal es dibujar en Paint(...)

si por alguna razon dibujas en otro evento por ejemplo Click, tienes que usar Refresh();

tanto para leer como para guardar puedes usar dialogos comunes.

Saludos.
  #3 (permalink)  
Antiguo 11/09/2006, 18:12
 
Fecha de Ingreso: julio-2006
Mensajes: 47
Antigüedad: 17 años, 9 meses
Puntos: 0
lo del dialogo, es porqe en principio las imagenes deberian guardarse en ese directorio, por eso de una vez el dialogo abre en ese directorio.

con respecto al codigo de lectura en el evento paint es porque mando a leer el archivo de texto de lo qe voy a dibujar, voi leyendo por linea y separando con split para armar asi un arreglo que luego lo uso para graficar los poligonos.

hice la lectura ahi en el evento paint... porqe si lo hago en el boton no caeria en lo qe habiamos hablado de las fulanas variables globales...? jajaja
  #4 (permalink)  
Antiguo 11/09/2006, 18:15
 
Fecha de Ingreso: julio-2006
Mensajes: 47
Antigüedad: 17 años, 9 meses
Puntos: 0
por cierto el evento paint una vez ejecutado qeda activo siempre?.

digo porqe me imagine qe luego de dibujar al apretar el boton ya no volveria...(ya qe el error aparece en un momento qe se supone no se esta ejecutando el evento paint) o tendre qe usar dispose luego de qe se dibuje(agregando ese codigo al boton,bueno voy a probar con eso a ver mientras...)?.
  #5 (permalink)  
Antiguo 11/09/2006, 18:25
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
mandame tu codigo a :

[email protected]

lo revisare y te cuento
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




La zona horaria es GMT -6. Ahora son las 12:40.