Скажем, у меня есть дескриптор контекста устройства (естественно, в среде Windows):Как найти размеры DC?
HDC hdc;
Как я могу получить ширину и высоту его?
Скажем, у меня есть дескриптор контекста устройства (естественно, в среде Windows):Как найти размеры DC?
HDC hdc;
Как я могу получить ширину и высоту его?
Контекст устройства (DC) - это структура, которая определяет набор графических объектов и связанных с ними атрибутов и графические режимы, влияющие на выход.
По ширине и высоте Я предполагаю, что вы имеете в виду растровое изображение, нарисованное?
Если да, то я думаю, вы можете попробовать следующее:
BITMAP structBitmapHeader;
memset(&structBitmapHeader, 0, sizeof(BITMAP));
HGDIOBJ hBitmap = GetCurrentObject(hDC, OBJ_BITMAP);
GetObject(hBitmap, sizeof(BITMAP), &structBitmapHeader);
//structBitmapHeader.bmWidth
//structBitmapHeader.bmHeight
Как отказ от ответственности, я ничего не знаю о GDI или о том, с чем вы должны работать в своем приложении. Я просто стараюсь быть полезным, если это возможно.
То есть, я нашел ссылку, которая, кажется, предположить, что это уместно использовать GetClientRect
, чтобы получить размер области рисования:
RECT clientRect;
GetClientRect(hWnd,&clientRect);
Я также знаю немного о GDI, но кажется GetDeviceCaps может сделать трюк.
Вы могли WindowFromDC(...)
получить окно в DC, если это связано с окном. Затем вы можете использовать ответ @ KevinK, чтобы получить от этого клиента.
Этот простой кусок кода, который я использую всегда, чтобы получить размеры области рендеринга, когда у меня есть только HDC. Во-первых, вы должны получить HWND от HDC - это просто, то вы можете получить клиентский прямоугольник этого HWND:
RECT rcCli;
GetClientRect(WindowFromDC(hdc), &rcCli);
// then you might have:
nWidth = rcCli.right-rcCli.left;
nHeight = rcCli.bottom-rcCli.top;
Это будет работать, только когда DC связано с окном. Для других случаев (например, DC, полученных из CreateCompatibleDC()) WindowFromDC() возвращает NULL. – Archie
В частности, 'GetDeviceCaps (HDC, HORZRES)' и 'GetDeviceCaps (HDC, VERTRES) 'скорее всего, то, что нужно. – TheUndeadFish
GetDeviceCaps (hdc, *) возвращает размеры экрана независимо от размера окна. Однако KevenK и GetClientRect от msandiford (WindowFromDC (hdc), & r) делают трюк. – AbePralle