powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как определить, откуда StretchBlt() отсчитывает координаты?
5 сообщений из 5, страница 1 из 1
Как определить, откуда StretchBlt() отсчитывает координаты?
    #33480912
kmn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
kmn
Гость
Нужно отобразить в окошечке кусок картинки, причем с масштабированием. Казалось бы, проблем нет. StretchBlt() - в се тут. Но оказалось не все так просто. В OnPaint'e пишу:

CPaintDC dc(this);
m_MemDC.SelectObject(&m_bmp);
dc.StretchBlt(x0d, y0d, wd, hd, &m_MemDC, xs, ys, ws, hs, SRCCOPY);

x0d, y0d, wd, hd - координаты левого верхнего угла и размеры участка dc для отображения;
xs, ys, ws, hs - координаты левого верхнего угла и размеры отображаемого участка картинки.

Когда все x0d=y0d=xs=ys=0, я хочу увидеть левую верхнюю часть картинки.
В большинстве случаев это действительно так. Но на одной машине при загруженном FAR'e отображается левая НИЖНЯЯ часть картинки. Причем, если FAR не был загружен - все нормально.
Похоже, StretchBlt при каких-то условиях отсчитывает вертикальную координату не от верха, а от низа.
Не важно, какие это условия. Я хочу только определить, откуда она отсчитывается. Как? В MSDN'e по этому поводу ничего не нашел.

Изначально m_MemDC и m_bmp определяются так:
CPaintDC dc(this);
m_MemDC.CreateCompatibleDC(&dc);
m_bmp.CreateCompatibleBitmap (&dc, 1, 1);
Потом m_bmp загружается из файла.
...
Рейтинг: 0 / 0
Как определить, откуда StretchBlt() отсчитывает координаты?
    #33481142
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmnНужно отобразить в окошечке кусок картинки, причем с масштабированием. Казалось бы, проблем нет. StretchBlt() - в се тут. Но оказалось не все так просто. В OnPaint'e пишу:

Это ужасная вещь. Он действительно всегда все отсчитывает с низа. Я помнится очень долго возился с этой функцией. Бери ватман и карандашик и сочиняй геометрические формулы. Старые свои сорцы я к сожалению потерял
...
Рейтинг: 0 / 0
Как определить, откуда StretchBlt() отсчитывает координаты?
    #33481209
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй
Код: plaintext
SetViewportExt
и выйдешь на новый уровень (тебе понравится)
http://lib.csu.ru/DL/bases/prg/frolov/books/bsp/v14/ch2.htm

______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Как определить, откуда StretchBlt() отсчитывает координаты?
    #33481435
kmn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
kmn
Гость
Сергей Ильич kmnНужно отобразить в окошечке кусок картинки, причем с масштабированием. Казалось бы, проблем нет. StretchBlt() - в се тут. Но оказалось не все так просто. В OnPaint'e пишу:

Это ужасная вещь. Он действительно всегда все отсчитывает с низа. Я помнится очень долго возился с этой функцией. Бери ватман и карандашик и сочиняй геометрические формулы. Старые свои сорцы я к сожалению потерял

В том то и дело, что не всегда (см. предыдущий пост). Формулу-то я нарисую, но нужно определить когда ее использовать.
...
Рейтинг: 0 / 0
Как определить, откуда StretchBlt() отсчитывает координаты?
    #33481477
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmnВ том то и дело, что не всегда (см. предыдущий пост). Формулу-то я нарисую, но нужно определить когда ее использовать.
Возможно, он отсчитывает с низа но при определенных это идентично отсчитывнию с верха. Правда, я сейчас вспомнил что я использовал StretchDIBBitsToDevice().
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как определить, откуда StretchBlt() отсчитывает координаты?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]