Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Visualizar graficos en una vista tipo CScrollView

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Visualizar graficos en una vista tipo CScrollView

Notapor johnny el Mar Sep 21, 2004 4:20 pm

Hola a todos.

Tengo una aplicacion SDI generada por el AppWizard, y su vista es derivada de CScrollView.

En la cual hé agregado el siguiente codigo en las funciones OnDraw y OnInitialUpdate:

Código: Seleccionar todo
void CDesplazView::OnDraw(CDC* pDC)
{
   CDesplazDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   // TODO: add draw code for native data here

   CSize siPantalla;
   siPantalla.cx= GetSystemMetrics(SM_CXSCREEN);
   siPantalla.cy= GetSystemMetrics(SM_CYSCREEN);

   pDC->SetMapMode(MM_ISOTROPIC);
   pDC->SetWindowExt(800,600);
   pDC->SetViewportExt(siPantalla.cx ,-siPantalla.cy);
   pDC->SetViewportOrg(siPantalla.cx/2,siPantalla.cy+100);

   CRect rect(-300,600,300,-600);

   pDC->Rectangle(&rect);

   CBrush brRelleno;
   brRelleno.CreateSolidBrush(RGB(0,0,255));
   CBrush *pBrAnterior=pDC->SelectObject(&brRelleno);

   pDC->Ellipse(&rect);

   pDC->SelectObject(pBrAnterior);
   brRelleno.DeleteObject();
}

void CDesplazView::OnInitialUpdate()
{
   CScrollView::OnInitialUpdate();

   CSize sizeTotal;
   // TODO: calculate the total size of this view
   sizeTotal.cx = 200;
   sizeTotal.cy = 1000;
   SetScrollSizes(MM_TEXT, sizeTotal);
}


Al ejecutar el programa, la imagen se visualiza bien, pero al deslizar la barra de desplazamiento vertical (u horizontal) el grafico no se repinta correctamente.

¿ Que estoy haciendo mal ó dejando de hacer ?

Gracias de antemano por su respuesta.

Johnny.
Ultima edición por johnny el Vie Oct 01, 2004 10:14 am, editado 1 vez en total
johnny
Usuario Activo
Usuario Activo
 
Mensajes: 47
Registrado: Lun Jun 21, 2004 4:02 pm
Ubicación: Arequipa-Perú

Re: Visualizar graficos en una vista tipo CScrollView

Notapor latindeveloper el Jue Sep 23, 2004 10:21 pm

Hola,

Veo que no estas guardando el area de pintado, tienes que almacenar lo que estas pintando y mostrarlo luego.

Puedes revisar

http://www.codeproject.com/docview/cscrollview.asp

que carga un bitmap en un scroll view,

Puedes pintar sobre la variable de ese articulo m_MemDC.

Tambien puedes crear un bitmap en blanco y asi no tendras problemas.
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Visualizar Grafico Vectorial en un ScrollView

Notapor johnny el Vie Oct 01, 2004 6:13 pm

Hola aqui yo de nuevo

Sigo sin solucionar el problema.

Amigo navisoft el ejemplo que carga un bitmap en un Scroll View funciona, pero este visualiza un bitmap. y yo necesito visualizar un grafico de naturaleza vectorial es decir generado atravez de las primitivas GDI (MoveTo, LineTo, Rectangle, etc..), ello es posible?

Ó tengo que comvertir mí grafico a un mapa de bits, pero ocuparia mucha memoria, en todo caso como lo ago?

Agradeceria mucho que mé den una pista, desde ya muchas gracias.

Atentamente Johnny
johnny
Usuario Activo
Usuario Activo
 
Mensajes: 47
Registrado: Lun Jun 21, 2004 4:02 pm
Ubicación: Arequipa-Perú


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados