Как я могу установить источник StretchDIBits в верхнем левом углу? - PullRequest
0 голосов
/ 28 мая 2018

Я использую 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), все, что я получаю, это чистый белый экран.

Меня не особенно интересует масштабирование или изменение размера окна, поэтому использование другой функции илиметод в порядке.

1 Ответ

0 голосов
/ 28 мая 2018

Чтобы перевернуть растровое изображение по вертикали:

Начните с client.bottom для координаты Y.Затем поменяйте знак высоты на -client.bottom:

StretchDIBits(hDC,
    0, client.bottom,
    client.right, -client.bottom,
    0, 0,
    winW, winH,
    buffer1, &bitInfo, DIB_RGB_COLORS, SRCCOPY);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...