嗨亲爱的大师和专家的程序员。

我不会开始与我是一个新手并不知道很多关于图象编程,但不幸的是,这些都是事实:(

我试图来显示图像从一位指针*。这是决议 1392x1032.我试图画,在一个区域的决议或大小627x474.

但是,重复努力似乎没有工作。它的作品当我改变的图像我创造了自*。宽度和高度分辨率或大小627x474

我真的不知道如何解决这在尝试所有可能的解决方案,从各种论坛和谷歌。

pDC是疾病预防控制中心*和memDC是疾病预防控制中心初始化在一个较早的方法 任何未初始化在这里被初始化了在其他方法。

这里是我的代码亲爱的谦卑的大师。做为我提供的指导尤达和Obi-Wan提供给卢克*天行者。

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类)将通过疾病预防控制中心作为以下另一类(可以说DemoControl类)

m_Demo = new DemoControl ; 

m_Demo->Initialisation( this, this->GetDC() ) ; 

(b)在DemoControl类

bool DemoControl::初始化(CDemoTestingDlg m_FormControl,疾病预防控制中心 m_StaticDisplay){

          pDC = m_StaticDisplay ; 
          memDC.CreateCompatibleDC(pDC); 

}

pDC和memDC是这样的标题:

CDC* pDC ; CDC memDC; 

(c)可以说,如果图像捕获的图像指的是传递给DemoTestingDlg类将随后呼叫一个图像查看器的方法中演示,控制这类方法的我写了这个问题。我做它吗?

注:它没有显示图像可以说,如果他们是同样大小的(通过他们我的意思是疾病预防控制中心和位),所以我的印象是,我的疾控中心指通过正确

有帮助吗?

解决方案

StretchBlt 是你的朋友:)

编辑:OK你怎么pDC的?当叫你的功能?形式的OnPaint或DRAWITEM?

这是一个StretchBlt我从在被覆盖的静态控件一个DRAWITEM呼叫做。

HDC hBitmapDC   = CreateCompatibleDC( pDrawItemStruct->hDC );

HBITMAP hBitmap = GetBitmap();
HGDIOBJ hOld    = SelectObject( hBitmapDC, (HGDIOBJ)hBitmap );

StretchBlt( pDrawItemStruct->hDC, pDrawItemStruct->rcItem.left, pDrawItemStruct->rcItem.top, pDrawItemStruct->rcItem.right, pDrawItemStruct->rcItem.bottom,
            hBitmapDC, 0, 0, 4, 4, SRCCOPY );

SelectObject( hBitmapDC, hOld );
DeleteObject( hBitmapDC );

它不使用MFC类伸展的4×4位图到一个更大的空间,但完美。我的猜测是,你不这样做响应WM_PAINT / WM_DRAWITEM和/或使用了错误的DC。

编辑重新您的编辑:你再从一个OnPaint或DRAWITEM调用内部调用的DrawImage?

我还以为你最好不要cacheing中华网并传递CDC每次在你想画它。

其他提示

"从一位指针*。这是决议1392x1032"

不不,它是的 尺寸 1392x1032.决议数量的离散视单位的距离。

反正如上文所述,你需要张贴更多的代码。至少显示OnPaint().你在哪里实例CPaintDC?做一个新的项目,并把所有你的码在那里,所以说,你有一个小测试设置展品的问题。你似乎大致上正确的轨道,如果使用StretchBlt()中的地位块传输()你现在使用的.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top