C/Visual C - Dibujar en C++

 
Vista:

Dibujar en C++

Publicado por Miguel Espinoza (34 intervenciones) el 13/09/2004 07:39:50
hola!!
en esta ocasion solo pido ayuda para dibujar una linea en pantalla. Trabajo con Visual C++ 6.0 en ambiente Windows (logicamente).
una simple linea, eso es lo que quiero.
muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dibujar en C++

Publicado por Oscar (114 intervenciones) el 15/09/2004 03:12:16
Para dibujar algo en una ventana tenes que obtener un HDC a partir del handle de esa ventana despues usas una Api como ser LineTo para dibujar la linea.
Si queres que el dibujo se mantenga siempre tenes que dibujarlo cada vez que la ventana tenga necesidad de redibujarse, eso lo sabes cuando te llega el mensaje WM_PAINT a partir de ahi con la Funcion de la API BeginPaint obtenes el HDC y podes usar las APIS de dibujo.
En el MSDN busca por BitBlt u otras y vas a llegar con el listado completo de ese tipo de APIs.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dibujar en C++ HELP

Publicado por leia (1 intervención) el 15/09/2004 09:10:23
Epa, yo también ando queriendo dibujar en una zona de una pantalla que he creado, utilizando MFCs. Lo que pasa es que necesito capturar el handler de dicha pantalla, para obtener las dimensiones y poder redimensionar el dibujo.
alguien sabe como hacerlo?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dibujar en C++ HELP

Publicado por Miguel Espinoza (34 intervenciones) el 15/09/2004 21:52:26
la vd que no, no he trabajado con MFC, solo en consola. pero aun no entiendo bien que es lo que sugiere Oscar...:S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dibujar en C++ HELP

Publicado por leia (8 intervenciones) el 17/09/2004 12:40:26
Yo tampoco entiendo muy bien eso del mensaje WM_PAINT, pero bueno, te envío el codigo qeu utilizo para dibujar, con las funciones LineTo y MoveTo, la primera dibuja y la otra desplaza el cursor sin dibujar.

CRect area;
m_areaXY.GetWindowRect(&area);
m_vistaxy.HLenght = area.Width() - 2;
m_vistaxy.VLenght = area.Height() - 2;
m_vistaxy.HScale = (float)(CFGDlg.m_maxX- CFGDlg.m_minX)/m_vistaxy.HLenght;
m_vistaxy.VScale = (float)(CFGDlg.m_maxY-CFGDlg.m_minY)/m_vistaxy.VLenght;

Y luego para dibujar utilizo lo siguiente:

m_vistaxy.pDC = m_areaXY.GetDC();
m_vistaxy.pDC->MoveTo((int)((float)evt.x/m_vistaxy.HScale),(int)(m_vistaxy.VLenght-(float)evt.y/m_vistaxy.VScale));
m_vistaxy.pDC->LineTo((int)((float)evt.x/m_vistaxy.HScale),(int)(m_vistaxy.VLenght-(float)evt.y/m_vistaxy.VScale));

Espero q te sirva, los valores de CFGDlg son los pixels de la pantalla, pero no la de la aplicación (que ahí es donde esta mi problema), yo captura la CWnd* wnd= GetForegroundWindow(); y son esas dimensiones las que cojo, y claro son las de todo el escritorio y el dibujo sale la mar de enano en mi pantalla. Por cierto, q la pantalla a la q me refiero es un CEdit dentro de un DialogBox, yo lo he hecho con el ClassWizard y todo eso, m_areaxy y m_vistaxy, hacen referencia al área en la que dibujo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar