【发布时间】:2010-09-09 06:16:45
【问题描述】:
我有一个函数生成一个需要在屏幕上绘制的数组。该阵列采用 8 位灰度图像的形式。如何正确地将数组绘制到屏幕上?我有这个应用程序的工作版本,带有使用 StretchDIBits 绘制图像的 win32 代码。我的问题是,我可以/如何在 wxWidgets 中做类似的事情吗?
相关工作win32代码:
screen = LCD_image( calcs[slot].cpu.pio.lcd ) ;
if (StretchDIBits( hdc,
rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
0, 0, lcd->width, 64,
screen,
bi,
DIB_RGB_COLORS,
SRCCOPY) == 0) {
printf("error in SetDIBitsToDevice\n");
}
if (BitBlt( hdcDest, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
hdc, 0, 0, SRCCOPY ) == FALSE) printf("Bit blt failed\n");
相关不工作的wxWidgets代码:
unsigned char *screen;
screen = LCD_image( calcs[gslot].cpu.pio.lcd ) ;
wxImage screenImage(rc.GetWidth(), rc.GetHeight(), screen, true);
wxBitmap bmpBuf(screenImage);
wxMemDC.SelectObject(bmpBuf);
wxDCDest->Blit(drawPoint.x, drawPoint.y, rc.GetWidth(), rc.GetHeight(), &wxMemDC, 0, 0);
wxMemDC.SelectObject(wxNullBitmap);
【问题讨论】: