minigui显示RAW数据图片

MYBITMAP 对象设备无关位图结构,BITMAP 是设备相关位图结构,主要区别在像素格式上。

如果你从外部获得的位图数据其像素格式和屏幕 DC 一致,比如,都是 RGB565 的 16 格式,
则可以直接构建一个 BITMAP 对象,然后用 FillBoxWithBitmap 函数输出到窗口 DC 中,比如:

BITMAP a_bmp;

a_bmp.bmType = BMP_TYPE_NORMAL;
a_bmp.bmBitsPerPixel = 16;
a_bmp.bmBytesPerPixel = 2;
a_bmp.bmAlpha = 0;
a_bmp.bmColorKey = 0;

a_bmp.bmWidth = your_width;
a_bmp.bmHeight = your_height;
a_bmp.bmPitch = your_width * 2;
a_bmp.bmBits = your_bits;

a_bmp.bmAlphaPixelformat = NULL;

FillBoxWithBitmap (hdc, x, y, 0, 0, &a_bmp);

如果不一致,则应该构建一个 MYBITMAP 结构,然后调用 ExpandMyBitmap 函数获得
设备相关的 BITMAP 对象,然后再输出到窗口 DC 中。比如你的像素结构是 24 位 RGB888
格式的,而屏幕像素结构是 16 位 RGB565 格式的,则:

MYBITMAP a_my_bmp;
BITMAP a_bmp;

a_my_bmp.flags = MYBMP_TYPE_RGB | MYBMP_FLOW_DOWN | MYBMP_RGBSIZE_3;
a_my_bmp.frames = 1;
a_my_bmp.depth = 24;
a_my_bmp.alpha = 0;
a_my_bmp.transparent = 0;
a_my_bmp.w = your_width;
a_my_bmp.h = your_height;
a_my_bmp.pitch = your_width * 3;
a_my_bmp.size = your_width * your_height * 3;
a_my_bmp.bits = your_bits;

ExpandMyBitmap (hdc, &a_bmp, &a_my_bmp, NULL, 0);
FillBoxWithBitmap (hdc, x, y, 0, 0, &a_bmp);

你可能感兴趣的:(嵌入式,YUV,嵌入式,minigui,图像处理)