CDC *screendc = getdc (); предоставление ошибки "значение типа "HDC" не может быть использовано для инициализации сущности типа " CDC *"
Привет У меня возникли проблемы с фрагментом кода, предназначенным для масштабирования изображения.Я нашел Пейс кода, чтобы сделать это здесь Масштабирование CImage[^Моя проблема заключается в том, что строка CDC *screenDC = GetDC(); выдает ошибку "значение типа "HDC" не может быть использовано для инициализации сущности типа "CDC *". Я не совсем уверен, как это исправить, так как все мои учетные записи должны работать правильно, и большинство других решений предлагают это в качестве примера.
Вот код
int iNewWidth = 2048; int iNewHeight = 2048; CImage image; image.Load(_T("C:\\Image.jpg")); CDC *screenDC = GetDC(); //Section that gives error CDC *pMDC = new CDC; pMDC->CreateCompatibleDC(screenDC); CBitmap *pb = new CBitmap; pb->CreateCompatibleBitmap(screenDC, iNewWidth, iNewHeight); CBitmap *pob = pMDC->SelectObject(pb); image.StretchBlt(pMDC->m_hDC,0, 0, iNewWidth, iNewHeight, 0, 0, image.GetWidth(), image.GetHeight(), SRCCOPY); pMDC->SelectObject(pob); CImage new_image; new_image.Attach((HBITMAP)(*pb)); new_image.Save(_T("c:\\NewImage.jpg")); new_image.Detach(); ReleaseDC(screenDC);
Спасибо
Что я уже пробовал:
Удаление этой линии приводит к тому, что изображение становится черным после масштабирования.
barneyman
вы находитесь в производном классе CWnd, когда вызываете это?
Похоже, вы получаете :: GetDC, который возвращает HDC
Member 12633893
Он находится в функции void, которая вызывается из main () приложения, если вы это имеете в виду?
Mohibur Rashid
Ваш код представляет собой смесь простых функций win32 и MFC. В MFC вы не взаимодействуете с основной функцией. CWnd:: GetDC () return CDC* с другой стороны :: GetDC return HDC.
CDC *screenDC = GetDC();
должно быть
HDC screenDC = GetDC();
а также заменить все CDC* на HDC