Привет, дорогие гуру и опытные программисты.
Я не собираюсь начинать с новичка и не очень разбираюсь в имиджевом программировании, но, к сожалению, это факты: (
Я пытаюсь отобразить изображение из растрового указателя * ImageData, который имеет разрешение
1392x1032. Я пытаюсь нарисовать это в области разрешения или размера 627x474.
Однако повторные попытки, похоже, не работают. Это работает, когда я изменяю растровое изображение, которое я создал, с ширины и высоты * ImageData на разрешение или размер около 627x474
Я действительно не знаю, как решить эту проблему, попробовав все возможные решения с различных форумов и Google.
pDC - это CDC *, а memDC - это CDC, инициализированный ранее.
Все, что здесь не было инициализировано, было инициализировано другими методами.
Вот мой код, дорогие смиренные гуру. Дай мне руководство, которое Йода и Оби-Ван предоставили Люку Скайуокеру.
void DemoControl::ShowImage( void *ImageData )
{
int Width; //Width of Image From Camera
int Height; //Height of Image From Camera
int m_DisplayWidth = 627 ;//width of rectangle area to display
int m_DisplayHeight = 474;//height of rectangle area to display
GetImageSize( &Width, &Height ) ; //this will return Width = 1392, Height 1032
CBitmap bitmap;
bitmap.CreateBitmap(Width,Height,32,1,ImageData);
CBitmap* pOldBitmap = memDC.SelectObject((CBitmap*)&bitmap);
pDC->BitBlt(22, 24, 627, 474, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject((CBitmap*)pOldBitmap);
ReleaseDC(pDC);
}
Хорошо, вот некоторые дополнительные детали
Думаю, мне следует объяснить, как проходит поток.
(a) Класс (скажем, класс DemoTestingDlg) передаст CDC, как показано ниже, другому классу (скажем, класс DemoControl)
m_Demo = new DemoControl ;
m_Demo->Initialisation( this, this->GetDC() ) ;
(b) В классе DemoControl
bool DemoControl :: Initialisation (CDemoTestingDlg m_FormControl, CDC m_StaticDisplay) {
pDC = m_StaticDisplay ;
memDC.CreateCompatibleDC(pDC);
}
pDC и memDC как таковые в шапке:
CDC* pDC ; CDC memDC;
(c) Если предположим, что изображение захвачено, указатель изображения передается в класс DemoTestingDlg, который впоследствии вызовет метод showImage в классе управления демонстрацией, который является методом, который я написал в вопросе. Я делаю это правильно?
Примечание: оно показывало изображение, если, скажем, они имеют одинаковый размер (под ними я подразумеваю CDC и растровое изображение), поэтому у меня сложилось впечатление, что мой указатель CDC был передан правильно