Cómo determinar los puntos de coordenadas en VC
Podemos usar el siguiente código:
void CTtView::OnDraw(CDC* pDC)
p>{
CTtDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); p>
CRect rect;
GetClientRect(&rect);
pDC-> SetMapMode(MM_ANISOTROPIC);
pDC->.SetViewportOrg(0, 0);
pDC->SetViewportExt( rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
pDC- >.SetWindowExt(1000,1000);
pDC->MoveTo(50,50);
pDC->LineTo(50,950);
pDC- >LineTo(950,950);
pDC- >. LineTo(50,50);
}
Análisis de código:
1 GetClientRect(&rect); obtiene el área rectangular del área del cliente y se almacena en rect
2. Utilice pDC->SetMapMode(MM_ ANISOTROPIC) para configurar el modo de mapeo.
3. Utilice pDC->SetViewportOrg(0,0); para establecer las coordenadas lógicas El origen de
4. Utilice pDC->SetViewportExt(rect.right,rect.bottom); /p>
pDC->SetWindowExt(1000,1000); para establecer el origen de las coordenadas lógicas, para determinar la correspondencia de tamaño entre las coordenadas lógicas y las coordenadas del dispositivo
5. En el modo MM_ANISOTROPIC, la X La unidad del eje y la unidad del eje Y pueden ser diferentes
6. El método para determinar la dirección de las coordenadas es: si el rango de la ventana lógica y el rango de la ventana gráfica tienen el mismo signo, la dirección de las coordenadas lógicas es la misma como dirección de la ventana gráfica, es decir, el eje X es positivo hacia la derecha y el eje Y es positivo hacia abajo.
7. Si el modo de visualización se cambia a MM_ISOTROPIC, la unidad del eje X y la unidad del eje Y deben ser las mismas, y los lectores interesados pueden crear las suyas propias.
(ii) Establezca coordenadas con el centro de la ventana gráfica como origen
Utilice el siguiente código:
void CTtView::OnDraw(CDC* pDC)
{
CTtDoc* pDoc = GetDocument();
ASSERT_ VALID(pDoc);
CRect rect;
GetClientRect (&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->.SetViewportOrg(rect.right/2,rect.bottom/2);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0).
pDC->SetWindowExt(1000 ,-1000) ;
pDC->MoveTo(150,150);
pDC->LineTo(-150,-200);
pDC->LineTo (150, - 150);
pDC->LineTo(150,150);
}
Análisis de código:
1. Usar pDC->SetViewportOrg (rect.right/2,rect.bottom/2); Establece el origen de la ventana gráfica.
2. Utilice pDC->SetViewportExt(rect.right,rect.bottom); y pDC->SetWindowExt(1000,-1000);
3. Dado que los signos del rango de la ventana lógica y el rango de la ventana gráfica son inconsistentes, la coordenada vertical se invierte, por lo que el eje Y es positivo hacia arriba.