Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/09/2006, 17:40
SombraK
 
Fecha de Ingreso: julio-2006
Mensajes: 47
Antigüedad: 17 años, 10 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.