Как узнать размеры DC?

Скажем, у меня есть дескриптор к контексту устройства (естественно в среде Windows):

HDC hdc;

Как я могу получить ширину и высоту ее?

14
задан Rob Kennedy 5 September 2013 в 18:37
поделиться

4 ответа

Контекст устройства (DC) - это структура, которая определяет набор графических объектов и связанных с ними атрибутов, а также графические режимы, влияющие на вывод.

По ширине и высоте, я полагаю, вы имеете в виду нарисованное растровое изображение?
Если да, то, думаю, вы можете попробовать следующее:

BITMAP structBitmapHeader;
memset( &structBitmapHeader, 0, sizeof(BITMAP) );

HGDIOBJ hBitmap = GetCurrentObject(hDC, OBJ_BITMAP);
GetObject(hBitmap, sizeof(BITMAP), &structBitmapHeader);

//structBitmapHeader.bmWidth
//structBitmapHeader.bmHeight
22
ответ дан 1 December 2019 в 06:53
поделиться

Вы можете WindowFromDC (...) получить окно контроллера домена, если оно связано с окном. Затем вы можете использовать ответ @ KevinK, чтобы получить прямо от этого клиента.

2
ответ дан 1 December 2019 в 06:53
поделиться

Я также мало знаю о GDI, но, похоже, GetDeviceCaps может сделать трюк.

12
ответ дан 1 December 2019 в 06:53
поделиться

В качестве отказа от ответственности, я ничего не знаю о GDI или о том, с чем вам приходится работать в вашем приложении. Я просто стараюсь быть полезным, если это возможно.

Тем не менее, я нашел ссылку, которая, кажется, предполагает, что уместно использовать GetClientRect, чтобы получить размер области рисования:

RECT clientRect;

GetClientRect(hWnd,&clientRect);

http://www.toymaker.info/Games/html/gdi.html#winsize

2
ответ дан 1 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: