Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo determinar los puntos de coordenadas en VC

Cómo determinar los puntos de coordenadas en VC

Establezca coordenadas con la esquina superior izquierda como origen, y los valores de coordenadas del eje X e Y son 1000

Podemos usar el siguiente código:

void CTtView::OnDraw(CDC* pDC)

p>

{

CTtDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

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.