• Lunes 29 de Abril de 2024, 02:58

Autor Tema:  Problemas Con Mfc  (Leído 1135 veces)

alfusfer

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Problemas Con Mfc
« en: Martes 9 de Marzo de 2004, 15:04 »
0
Tengo que dibujar una superfice poligonal y dentro de esta unos cuantos circulos. He utilizado MFC y el siguiente código dibuja lo que quiero, pero con el inconveniente de que los parametros estan fijos.


void CdrawView::OnDraw(CDC* pDC)
{
CdrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here

CPen * draw_poly;
CPen Lapiz (PS_SOLID, 3, RGB (0,0,0));
POINT puntos [7] = {600, 50, 350, 250, 250, 550, 550, 750, 950, 650, 1100, 350,600,50};
draw_poly = pDC ->SelectObject(&Lapiz);
pDC ->Polyline (puntos,7);
pDC ->SelectObject (Lapiz);


CPen * draw_circles;
CPen Lapiz2 (PS_SOLID, 1, RGB (0,0,0));

CBrush * antiguoRelleno;
CBrush Relleno (RGB (0,0,255));

draw_circles = pDC ->SelectObject(&Lapiz2);
antiguoRelleno = pDC ->SelectObject (&Relleno);

pDC->Ellipse(450, 50, 750, 350);
pDC->Ellipse(300,150, 600, 450);
pDC->Ellipse(200,350, 500, 650);
pDC->Ellipse(350,450, 650, 750);
pDC->Ellipse(550,500, 850, 800);
pDC->Ellipse(700,450,1000, 750);
pDC->Ellipse(800,275,1125, 600);
pDC->Ellipse(650,100, 950, 400);
pDC->Ellipse(475,300, 675, 500);
pDC->Ellipse(625,300, 825, 500);
pDC->Ellipse(550,400, 750, 600);
pDC ->SelectObject (Lapiz2);

}

Mi pregunta es: Como puedo cambiar los radios de los
circulos cuando el programa se esté ejecutando? me gustaría meterlos por
pantalla, o que los lea de una matriz.  Para ello necesitaré hacer una llamada a la función metiendole unos parametros, como por ejemplo:

         OnDraw(CDC* pDC, int X1, int Y1, int X2, int Y2);

 y en el programa que he puesto antes tendría que poner algo así (más o menos)

                 pDC->Ellipse(X1, Y1, X2, Y2);

Espero que alguien me pueda echar un cable con esto.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Problemas Con Mfc
« Respuesta #1 en: Martes 9 de Marzo de 2004, 15:36 »
0
Vos podes hacer lo q decis, o sea, al encabezado del metodo OnDraw() le podes pasar los parametros q se te antojen, pero me parece mejor declarar una matriz (o la estructura de memoria q se te antoje) como atributo privado de la clase. La manera de levantar datos desde el usuario, seria largar una ventana con ciertos "Edit Box"(o como se llamen) y levantas la info desde el usuario y cargas la matriz previamente declarada. Luego en el metodo OnDraw(), cuando llamas a Ellipse, levantas los datos de la matriz.
Yo recomiendo no pasarle parametros a OnDraw() porque este es llamado por WINDOWS, o sea, vos podes llamarlo por codigo pero hay veces q es llamado directamente sin intervencion del programador, y en tal caso llevaria como parametros a "basura" o cosas inexsitente, entendes?????

Salu2!!!!!!