我正在使用Win32Api,我正在寻找一种方法将BGR(或RGB,BGRA,RGBA ......)数据加载到窗口。
从左下方开始向上移动,就像这一段一样
逐渐向下走到右下角,StretchDIBits
而不是从左上角开始,转到右上角,
这就是我制作winW和winH的方式:
const unsigned int winW = 800;
const unsigned int winH = 600;
unsigned char buffer1[winW * winH * 3]; // desired window data array, one-dimensional
这个(修剪过的)是我目前使用WindProc方法的方式:
PAINTSTRUCT ps;
HDC hDC;
RECT client;
switch (message)
{
case WM_PAINT:
hDC = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &client);
StretchDIBits(hDC,
0, 0,
client.right, client.bottom,
0, 0,
winW, winH,
buffer1, &bitInfo, DIB_RGB_COLORS, SRCCOPY);
EndPaint(hwnd, &ps);
如果我尝试沿中心水平线翻转它(交换winH及其0,或者client.bottom和第二个0),我得到的只是一个空白的白色屏幕。
我对缩放或调整窗口大小并不特别感兴趣,所以使用不同的函数或方法是可以的。
答案 0 :(得分:1)
垂直翻转位图:
从Y {坐标client.bottom
开始。然后将高度符号交换为-client.bottom
:
StretchDIBits(hDC,
0, client.bottom,
client.right, -client.bottom,
0, 0,
winW, winH,
buffer1, &bitInfo, DIB_RGB_COLORS, SRCCOPY);