Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18

Как программно повернуть изображение на экране на 90 градусов?

15.12.2015, 12:17. Показов 6465. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как программно в Win7 сменить ориентацию экрана т.е. повернуть изображение на экране на 90 градусов.
Как программно временно запретить автоматическую смену ориентации при повороте планшета?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2015, 12:17
Ответы с готовыми решениями:

Как можно повернуть изображение на 'n' градусов?
Как можно повернуть изображение на 'n' градусов?

Как повернуть изображение на 90 градусов в формате PostScript?
Доброго времени суток! Скачала вот по этой ссылке документ, но его изображение оказалось повёрнутым на \frac{\pi}{2} против часовой...

Монитор LG Flatron E 2351 как повернуть изображение на 90 градусов
Здравствуйте. Подскажите пожалуйста как повернуть изображение на мониторе на 90 градусов. Монитор LG Flatron E 2351 ОС Windows 7. ...

15
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
15.12.2015, 21:11
По второму вопросу - http://lifehacker.ru/2012/12/0... windows-8/ (возможно, для семерки подойдет).
Смотри "Универсальный способ" внизу. Редактируем программно соответствующий ключ реестра.

Добавлено через 1 час 52 минуты
Еще: http://stackoverflow.com/quest... tes-status
0
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18
16.12.2015, 20:16  [ТС]
Спасибо! С запретом auto-rotate всё получилось.
А вот как в своей программе повернуть экран вертикально и по выходу вернуть его обратно никак не могу найти...
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
16.12.2015, 20:40
Можно в настройках видеокарты задать комбинации клавиш для поворота экрана, а потом использовать глобальные горячие клавиши в программе.



А насчет другого способа - пробовал "вращать экран" через Send/PostMessage, но не получилось.
Поэтому можно спросить volvo. Вдруг он знает.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
16.12.2015, 20:45
При запуске программы поворачивайте экран, при завершении - возвращайте обратно все внесенные в реестр изменения.
0
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18
16.12.2015, 20:52  [ТС]
Цитата Сообщение от gunslinger Посмотреть сообщение
Можно в настройках видеокарты задать комбинации клавиш для поворота экрана, а потом использовать глобальные горячие клавиши в программе.
Программа должна работать на разных планшетах. И какие там горячие клавиши заранее не известно

Цитата Сообщение от Почтальон Посмотреть сообщение
При запуске программы поворачивайте экран, при завершении - возвращайте обратно все внесенные в реестр изменения.
Так я о том и спрашиваю что нужно сделать (например в реестре) чтобы повернуть экран.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
16.12.2015, 20:59
Через реестр - сомневаюсь в этом способе. Как теоретически можно сделать - указал выше. Вопрос в реализации / знании синтаксиса (думаю, в Win 7 есть такая возможность).
Скажу лишь, что Win Spy не помог мне в понимании (хотя я вроде не слепой), какие команды нужны отсылать системе для переворота изображения экрана.
0
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18
16.12.2015, 21:04  [ТС]
Я тоже думаю, что должна же быть такая функция для поворота экрана. Ведь как-то же сделан автоповорот. Но вот какая и где никак не могу найти. Мне нужно не только для Win7, но и выше 8, 10...
Будем искать дальше...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
17.12.2015, 01:24
Цитата Сообщение от gunslinger Посмотреть сообщение
Вдруг он знает
MSDN-то точно знает, он говорит, что EnumDisplaySettings + ChangeDisplaySettings сделают все, что нужно...
3
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
17.12.2015, 20:03
Изменил немного код (эффект получаем сразу после клика на элемент из RadioGroup):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void __fastcall TForm1::RadioGroupClick(TObject *Sender)
{
   DEVMODE dm;
   // initialize the DEVMODE structure
   ZeroMemory(&dm, sizeof(dm));
   dm.dmSize = sizeof(dm);
 
   if (0 != EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm))
   {
      // determine new orientaion
      unsigned long dwDO = dm.dmDisplayOrientation, DisplayOrientation[4] = {DMDO_DEFAULT, DMDO_90, DMDO_180, DMDO_270};
      dm.dmDisplayOrientation = DisplayOrientation[RadioGroup->ItemIndex];
//    if (abs(dm.dmDisplayOrientation - dwDO) % 2)  // если поворот на 90 или 270 градусов; костыль
      // если поворот на 90 или 270 градусов
      if (
          ((dwDO == DMDO_DEFAULT || dwDO == DMDO_180) && (dm.dmDisplayOrientation == DMDO_90 || dm.dmDisplayOrientation == DMDO_270))
            ||
          ((dwDO == DMDO_90 || dwDO == DMDO_270) && (dm.dmDisplayOrientation == DMDO_DEFAULT || dm.dmDisplayOrientation == DMDO_180))
         )
         {
            // swap height and width
            DWORD dwTemp = dm.dmPelsHeight;
            dm.dmPelsHeight= dm.dmPelsWidth;
            dm.dmPelsWidth = dwTemp;
         }
 
      long lRet = ChangeDisplaySettings(&dm, 0);
      if (DISP_CHANGE_SUCCESSFUL != lRet)
      {
         // add exception handling here
      }
   }
}
Изображения
 
1
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18
17.12.2015, 20:22  [ТС]
Цитата Сообщение от gunslinger Посмотреть сообщение
Изменил немного код (эффект получаем сразу после клика на элемент из RadioGroup):
Я тоже сейчас разбираюсь с поворотом и написал почти такую же функцию.
Но вот поворота не происходит.
long lRet = ChangeDisplaySettings(&dm, 0) всегда возвращает ошибку: DISP_CHANGE_BADMODE (-2)
Проверил Ваш пример - точно так же.
При первой попытке поворота экран мигнёт на мгновение, но всё остаётся на своих местах. А потом даже и не мигает.
Сейчас разбираюсь с этим...

Пришлите, пожалуйста, ваш .exe файл. Проверю у себя. Может аппаратная несовместимость какая.
У меня Win 7. Builder RAD 10
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
17.12.2015, 20:40
Project2.zip
1
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18
17.12.2015, 20:56  [ТС]
И ваш пример у меня тоже не заработал. Тоже мигает на первой попытке и всё.
Я сейчас проверяю на стареньком ноутбуке. Видимо у него драйвер видеокарты не поддерживает поворот экрана.
В настройках драйвера я нигде не нашёл такую возможность.
Видео: Intel Mobile Graphic 945G
Завтра проверю на другом компьютере и на планшете.
Спасибо за помощь!
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
17.12.2015, 21:15
Не за что.
По первой ссылке от volvo написано же:
Note that this code will only work with devices that support the respective display settings.
It is important to obey the return value of the ChangeDisplaySettings API as some operations may require the computer to be restarted in order for the graphics mode to work.
Что означает: код будет работать, только если устройство поддерживает соответствующие настройки [дисплея].
Очевидное предложение.

Добавлено через 10 минут
Еще написано, что иногда нужно перезагрузить компьютер, чтобы некоторые операции по изменению настроек возымели эффект (определенный графический режим стал работать), но по этому поводу ничего сказать не могу.
1
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 18
18.12.2015, 10:46  [ТС]
Сейчас проверил переворот на других компьютерах и планшетах. Всё работает! И моя программа и ваша. Ещё раз спасибо за участие и помощь!
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
18.12.2015, 18:01
Отверткой крутит может каждый, а вот где крутить, знают не все. Поэтому благодарить, по-хорошему, стоит все-таки volvo.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2015, 18:01
Помогаю со студенческими работами здесь

Повернуть изображение на 90 градусов
День добрый:) Понимаю что тема не нова, перечитал кучу подобных тем но все же не понимаю один нюанс. Цель поставлена следующая:...

Повернуть изображение на 90 градусов
написать программу которая поворачивает изображение на 90 градусов имеется недоделанный код. помогите доделать. import java.awt.*; ...

DSPack повернуть изображение на 90 градусов
Добрый день, подскажите, возможно ли повернуть изображение в VideoWindow на 90 градусов средствами DSPack? Если создавать отдельный Image...

Повернуть изображение на 180 градусов в PictureBox
Помогите пжлста инвертировать изображение(развернуть на 180 градусов) в picturebox. Есть пикчабокс со вставленным изображением через...

Как повернуть объект на n градусов?
так.я написал прогу..секунд 5-30 идет норм ..потом оч долго грузится.....итак гдет 50 обьектов меняют картинку каждый..ээ...ход..от этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru