Digamos que tengo un manejador del contexto de dispositivo (naturalmente, en el entorno de Windows):¿Cómo averiguar las dimensiones de DC?
HDC hdc;
¿Cómo puedo obtener el ancho y la altura de la misma?
Digamos que tengo un manejador del contexto de dispositivo (naturalmente, en el entorno de Windows):¿Cómo averiguar las dimensiones de DC?
HDC hdc;
¿Cómo puedo obtener el ancho y la altura de la misma?
Un contexto de dispositivo (DC) es una estructura que define un conjunto de objetos gráficos y sus atributos asociados, y los modos gráficos que afectan el resultado.
Por ancho y alto supongo que te refieres al mapa de bits pintado?
Si es así, supongo que se puede intentar lo siguiente:
BITMAP structBitmapHeader;
memset(&structBitmapHeader, 0, sizeof(BITMAP));
HGDIOBJ hBitmap = GetCurrentObject(hDC, OBJ_BITMAP);
GetObject(hBitmap, sizeof(BITMAP), &structBitmapHeader);
//structBitmapHeader.bmWidth
//structBitmapHeader.bmHeight
Como descargo de responsabilidad, no sé nada sobre GDI o con qué debe trabajar en su aplicación. Solo estoy tratando de ser útil si es posible.
Dicho esto, he encontrado un enlace que parece sugerir que es apropiado utilizar GetClientRect
para obtener el tamaño del área de dibujo:
RECT clientRect;
GetClientRect(hWnd,&clientRect);
también saben muy poco acerca de GDI, pero parece que GetDeviceCaps podría hacer el truco.
Usted podría WindowFromDC(...)
para obtener la ventana de la CC si se asocia con una ventana. Luego puede usar la respuesta de @KevinK para obtener al cliente de esto.
Esta simple pieza de código que uso siempre para obtener las dimensiones del área de renderizado, cuando solo tengo el HDC. primer lugar, usted debe obtener un HWND de la HDC - es simple, entonces se puede obtener la rect cliente de este HWND:
RECT rcCli;
GetClientRect(WindowFromDC(hdc), &rcCli);
// then you might have:
nWidth = rcCli.right-rcCli.left;
nHeight = rcCli.bottom-rcCli.top;
Esto solo funcionará cuando DC esté asociado con una ventana. Para otros casos (por ejemplo, DC obtenido de CreateCompatibleDC()) WindowFromDC() devolverá NULL. – Archie
Específicamente, 'GetDeviceCaps (HDC, HORZRES)' y 'GetDeviceCaps (HDC, VERTRES) 'son muy probablemente lo que se desea. – TheUndeadFish
GetDeviceCaps (hdc, *) devuelve las dimensiones de la pantalla independientemente del tamaño de la ventana. KevenK y GetClientRect de msandiford (WindowFromDC (hdc), & r) hacen el truco. – AbePralle