Как вывести изображение на экран c
Всем привет, вот я задуал идею, зделать прогу, чтобы при начале ее работы выводилась на экран картинка, фората .bmp, и висела определенное кол-во секунд (ну это чуть позже) и открывать ее не с помощью там редакторов, а вот наприер картинка 120*120 пикселов и чтобы она заниала это пространство на рабоче столе. Спасибо за внимание, буду благодарен за любую информацию.
P.S. у меня стоит VS 6
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
ой, забыл, не нужна инфорация по поводу: про какие функции почитать (которые будут употреблены в ходе работы) и какие книжки взять в руки по этой теме
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
Сообщение от Olejik
какие книжки взять в руки по этой теме
бери книги по winapi
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
спасибо за ответ
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
Здравствуйте опять, у меня появились вопросики:
CreateBitmap,AlphaBlend,BitBlt,Load Bitmap — это мне поможет вывести картиночку на монитор?
И вообще я хочу узнать алгоритм вывода рисунка на экран,я так понял он примерно таков: открываем bmp файл, считываем оттудова рисунок (в двумерный массив, динамический), потом вписываем функции, которые будут выводить его на экран, задаем местоположение его на рабочем столе, создаем чот то наподобии окошка, размер которого равен размеру картинки и в него «запихиваем» картиночку. Если я не прав, то поправьте меня, т.к. я это из головы своей взял.
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
Вот, пример набросал:
#include #include long __stdcall WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInstance; // объявляем глобальную переменную g_hInstance, дабы можно было использовать hInstance в ф-циях, окромя WinMain. const int width = 600; const int height = 300; int __stdcall _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd) < WNDCLASS wc; MSG msg; TCHAR* lpClassName = TEXT("SplashWindow"); g_hInstance = hInstance; memset(&wc, 0, sizeof(wc)); wc.hbrBackground = (HBRUSH)5; wc.hCursor = LoadCursor(0, IDC_ARROW); wc.hIcon = LoadIcon(0, IDI_APPLICATION); wc.hInstance = hInstance; wc.lpfnWndProc = WindowProc; wc.lpszClassName = lpClassName; wc.style = CS_HREDRAW|CS_VREDRAW; RegisterClass(&wc); int x = (GetSystemMetrics(SM_CXSCREEN) - width)/2; // вычисляем координату икс так, чтобы окно было расположено по центру int y = (GetSystemMetrics(SM_CYSCREEN) - height)/2; // то же самое для игрек (GetSystemMetrics(SM_CYSCREEN) возвращает текущее разрешение по вертикали // SM_CXSCREEN то же самое, но по горизонтали) CreateWindowEx(0, lpClassName, 0, WS_POPUP|WS_VISIBLE, x, y, width, height, NULL, 0, hInstance, 0); // задаём стиль WS_POPUP(чтобы окно было без заголовка и т.д.) while(GetMessage(&msg, NULL, 0, 0)) < DispatchMessage(&msg); >return 0; > long __stdcall WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) < HDC hDC; HDC hMemDC; PAINTSTRUCT ps; static HBITMAP hBitmap; // static, чтобы не создавались каждый раз static DWORD TimerID; // при вызове ф-ции, а оставались теми же switch(uMsg) < case WM_CREATE: hBitmap = LoadBitmap(g_hInstance, TEXT("image")); // загружаем из ресурсов битмап TimerID = SetTimer(hWnd, 0, 2000, 0); // ставим таймер в 2 секунды break; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); // получаем контекст окна hMemDC = CreateCompatibleDC(hDC); // создаём совместимый контекст в памяти SelectObject(hMemDC, hBitmap); // зарисовываем его нашей картинкой BitBlt(hDC, 0, 0, width, height, hMemDC, 0, 0, SRCCOPY); // копируем из контекста в памяти в контекст окна DeleteDC(hMemDC); // удаляем контекст в памяти EndPaint(hWnd, &ps); break; case WM_TIMER: // это сообщение мы получаем раз в 2 секунды KillTimer(hWnd, TimerID); // поскольку всё что нам нужно - это закрытие окна, то можем смело удалять таймер прямо тут SendMessage(hWnd, WM_DESTROY, 0, 0); // отправляем окну сообщение о разрушении break; case WM_DESTROY: DeleteObject(hBitmap); PostQuitMessage(0); // завершить программу по закрытии окна break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); >return 0; >
битмап я храню в ресурсах, с идентификатором image.
Контекст окна(DC — Device Context — Контекст Устройства) — это область памяти, где хранится графическое отображение окна. Можно напрямую в него копировать битмап(SelectObject(hDC, hBitmap), но это будет медленно, быстрее отрисовать его в памяти, а потом скопировать эту память на контекст окна(это называется двойной буферизацией), для этого мы пользуемся ф-цией CreateCompatibleDC(hDC); — она создаёт совместимый контекст в памяти. В обработке сообщения WM_CREATE я устанавливаю таймер, который каждые две секунды будет посылать окну сообщение WM_TIMER, в обработке коего я посылаю окну сообщение о разрушении. В общем в интернете много материала на эту тему — почитайте, что не ясно — спрашивайте)
Последний раз редактировалось netrino; 15.09.2009 в 19:59 .
Вывод изображения на экран
Ребят, как можно вывести изображение формата jpeg, png, bmp? Какие библиотеки для этого нужны или есть где-нибудь подробная инструкция? Это сложно?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вывод на экран изображения фигур (Ромб вписан в треугольник)
как написать программу вывода на экран изображения фигур(Ромб вписан в треугольник)?Объясните.
Вывод изображения на экран
Подскажите как справиться с задачей! Нужно вывести изображение треугольника с заданными.
Вывод изображения на экран
Здравствуйте! Пишу программу в консольном приложении Win32 на С++. Подскажите пожалуйста, как.
Вывод изображения на экран
Нужно вывести изображение .png без рамки (голая картинка без окна, и соответственно рамок и.
3817 / 2384 / 414
Регистрация: 09.09.2017
Сообщений: 10,349
Средствами языка это сделать невозможно: в Си нет стандартных функций рисования. Открыть графический файл как бинарный и разбирать формат можно, конечно, но неэффективно.
Значит, нужно выбрать графическую библиотеку, которой будете пользоваться. А это зависит от конечной цели, которую перед собой ставите:
1. Игры и т.п., где от библиотеки требуется только создать окно да отлавливать ввод, остальное будет через OpenGL/DirectX/Vulkan. Тут самые известные SDL, SFML, GLUT, GLEW.
2. «Офисные», где требуется развесистый набор стандартных компонентов вроде кнопочек, формочек, полей и т.п., а скорость вывода вторична. Тут стоит взять QT или gtk. Есть еще несколько, но они менее распространены.
3. «ядерное программирование», то есть просто желание познакомиться с конкретной системой и ее низкоуровневыми функциями. Ну, тут только искать самые низкоуровневые функции, доступные для вашей целевой системы.
.
Лично я для аналогичной задачи брал SDL2, там и вывод графики есть, и импорт картинок. И много чего другого, но пока это не важно. Говорят, то же самое есть в SFML, но сам не трогал.
Регистрация: 08.08.2017
Сообщений: 17
Сообщение от COKPOWEHEU
Средствами языка это сделать невозможно: в Си нет стандартных функций рисования. Открыть графический файл как бинарный и разбирать формат можно, конечно, но неэффективно.
Значит, нужно выбрать графическую библиотеку, которой будете пользоваться. А это зависит от конечной цели, которую перед собой ставите:
1. Игры и т.п., где от библиотеки требуется только создать окно да отлавливать ввод, остальное будет через OpenGL/DirectX/Vulkan. Тут самые известные SDL, SFML, GLUT, GLEW.
2. «Офисные», где требуется развесистый набор стандартных компонентов вроде кнопочек, формочек, полей и т.п., а скорость вывода вторична. Тут стоит взять QT или gtk. Есть еще несколько, но они менее распространены.
3. «ядерное программирование», то есть просто желание познакомиться с конкретной системой и ее низкоуровневыми функциями. Ну, тут только искать самые низкоуровневые функции, доступные для вашей целевой системы.
.
Лично я для аналогичной задачи брал SDL2, там и вывод графики есть, и импорт картинок. И много чего другого, но пока это не важно. Говорят, то же самое есть в SFML, но сам не трогал.
Спасибо за столь подробную информацию!
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Вывод изображения на экран
Написать программу, которая выводит на экран данное изображение
Вывод изображения на экран
Среда разработки — Visual Studio 2015 Цель — вывести bmp картинку на экран Заранее спасибо
Вывод изображения на экран
Всем Доброго времени суток. Дано изображение в формате bmp. Вывести его на экран путём случайного.
Вывод на экран графического изображения
вывод на экран графического изображения на экран. Каждый элемент фигуры должен быть закрашен в свой.
Вывод изображения на экран
Как вывести изображение на экран юзеру, при этом изображение должно быть поверх окон.
Отслеживать
задан 20 июл 2020 в 11:17
Yarick_Suharik Yarick_Suharik
11 4 4 бронзовых знака
Всегда поверх окон или только когда окно с приложением активно?
20 июл 2020 в 11:22
Всегда поверх окон.
20 июл 2020 в 11:23
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можно использовать функцию SetWindowPos с параметром HWND_TOPMOST .
Отслеживать
ответ дан 21 июл 2020 в 1:47
Alexander Petrov Alexander Petrov
29k 5 5 золотых знаков 28 28 серебряных знаков 55 55 бронзовых знаков
- c++
- windows
- winapi
- Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.29.1670
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как подключить ноутбук к телевизору — с кабелем и без него
Вывести на телевизор изображение с экрана ноутбука можно многими способами. Решающий фактор — технические возможности обоих устройств. Например, в устаревших моделях могут отсутствовать необходимые разъёмы или интерфейсы беспроводного подключения. В этой статье мы собрали различные варианты решения проблемы.
Изображение с ноутбука дублируется на телевизоре. Источник: asurion.com
Кабель HDMI
Для самого простого способа подключения потребуется HDMI-кабель. Разъём HDMI есть в каждом современном ноутбуке или телевизоре. Этот интерфейс способен передавать цифровое изображение в разрешении до 4К, а также поддерживает стереозвучание.
При подключении устройств с помощью HDMI телевизор выступает в качестве основного или дублирующего экрана. Главное — выбрать подходящий кабель: от него зависит максимальное передаваемое разрешение. Для разрешения Full HD хватит кабеля версии 1.4, а для 4К понадобится 2.0 или 2.1. Инструкция для такого подключения устройств очень проста:
- Подключите кабель к HDMI-разъёмам обоих устройств. Если в ноутбуке такой порт обычно один, то в телевизоре их всегда несколько. Они должны быть пронумерованы. Лучше сразу запомнить, какой используется разъём — это упростит дальнейшую настройку.
Разъёмы HDMI в телевизоре всегда подписаны и пронумерованы. Источник: btech.com
2. При помощи пульта ДУ измените источник сигнала, выбрав нужный HDMI-разъём: они также пронумерованы в меню настроек. Выбрать один из них можно кнопкой на пульте телевизора. Ищите кнопку Input или Source — название варьируется в зависимости от модели.
3. На ноутбуке откройте настройки дисплеев. В операционной системе Windows это можно сделать через контекстное меню «Разрешение экрана» или комбинацию клавиш Win + P. В появившемся списке выберите пункт «Повторяющийся». После этого телевизор будет дублировать изображение дисплея ноутбука.
Выбор одного из четырёх режимов подключения дополнительного экрана. Иллюстрация: Никита Соколов
4. Также можно выбрать пункт «Только второй экран». В таком случае телевизор станет основным и единственным монитором, а экран ноутбука потемнеет.
Разрешение экрана должно настроиться автоматически. Если этого не произошло, перейдите в настройки экрана через контекстное меню. Здесь же можно изменить масштабирование, яркость и другие параметры.
Кабель VGA
Это ещё один способ проводного подключения телевизора к ноутбуку. Он подходит для устаревшей техники, где нет более современных HDMI-разъёмов. В то же время два устройства с разными разъёмами можно подключить с помощью специальных адаптеров HDMI — VGA. Главные недостатки VGA — отсутствие поддержки разрешения 4К и возможности передавать звук.
Во многих ноутбуках есть разъёмы как HDMI, так и VGA. Источник: sautitech.com
Чтобы подключить телевизор к ноутбуку при помощи такого кабеля, сначала вставьте его в соответствующие разъёмы устройств. После этого нужно сделать 3 простых шага:
- Изменить на пульте источник сигнала. Для этого воспользуйтесь на пульте кнопкой Source или Input, выбрав в появившемся списке VGA.
- На ноутбуке перейти к настройкам экрана: Параметры — Система — Дисплей.
- Выбрать ваш телевизор и соединиться с ним.
Как и HDMI, интерфейс VGA позволяет менять режимы работы экранов ноутбука и телевизора. Можно дублировать их или сделать один из них главным и единственным. Звук при этом передаваться не будет, поэтому его продолжит воспроизводить ноутбук.
Беспроводное соединение Wi-Fi
Если HDMI-кабель обеспечивает самое простое и удобное проводное соединение, то для беспроводного лучшим вариантом считается Wi-Fi. Его поддерживают все ноутбуки и современные телевизоры.
Wi-Fi Direct или Miracast находятся в разделе с настройками сети. Источник: itumnik.ru
Подключение производится по разным технологиям: например, Wi-Fi Direct или Miracast. Узнать, поддерживается ли одна из них телевизором, можно в его технических характеристиках. Производители также всегда указывают это на коробке. Чтобы соединить устройства, следуйте инструкции:
- На телевизоре и ноутбуке включите Wi-Fi.
- Откройте настройки сети в меню телевизора и найдите пункт подключения устройств. В некоторых моделях он называется иначе: например, SmartShare или «Источник».
- В появившемся списке найдите функцию Wi-Fi Direct.
В меню SmartShare отображаются все доступные для подключения устройства. Источник: smart-iptv.ru
4. В ноутбуке откройте меню настроек экрана. Для этого проследуйте по пути: Пуск — Параметры — Система — Дисплей.
5. Выберите пункт подключения к беспроводному дисплею и кликните в выпавшем списке на нужное устройство.
Когда всё будет сделано, на экране телевизора появится запрос на подтверждение сопряжения. С этого момента изображение с дисплея ноутбука будет транслироваться на ТВ. Звук тоже будет передаваться без каких-либо дополнительных настроек.
Подключение по Chromecast
Ещё одна технология беспроводного сопряжения ноутбука с телевизором. Способ удобный, но для него потребуется отдельная приставка Chromecast: есть модели с поддержкой Full HD и 4K. После подключения она превратит даже старый телевизор без Smart TV в современную модель с широким набором функций. Через Chromecast можно транслировать с ноутбука окно браузера Google Chrome, а также фото, музыку или фильмы.
Приставка Chromecast превращает любой телевизор в современное устройство с поддержкой приложений из Google Play. Источник: canbuyornot.com
Главное, чтобы и ноутбук, и Chromecast были подключены к одной сети. Дальнейшие действия элементарны:
- Откройте на компьютере браузер Google Chrome.
- Вызовите меню, нажав на иконку с троеточием в верхнем правом углу.
- Выберите пункт «Трансляции».
- В появившемся окошке найдите нужную модель телевизора.
- Выберите, что именно необходимо транслировать на экран телевизора.
Папка с общим доступом
Данный способ подключения ноутбука к телевизору не позволяет транслировать изображение с одного устройства на экран другого — принцип действия несколько отличается. Система ноутбука предоставляет телевизору доступ к папке, где расположены заранее собранные файлы: фотографии, видео или музыка. Инструкция для этого метода следующая:
1. Подключите ноутбук и телевизор к единой сети, например, одному Wi-Fi роутеру. Телевизор можно подключить и с помощью сетевого кабеля.
2. На ноутбуке создайте папку с файлами, к которым необходимо открыть доступ. Именно их можно будет просматривать на телевизоре.
3. Кликните по данной папке правой кнопкой мыши и выберите пункт «Свойства».
4. Перейдите во вкладку «Доступ» и нажмите на кнопку «Расширенная настройка». Активируйте функцию, поставив галочку «Открыть общий доступ к этой папке».
Общий доступ к любой папке на ноутбуке открывается несколькими кликами. Иллюстрация: Никита Соколов
В этой папке можно хранить фильмы или сериалы, музыку или фотографии. Чтобы получить доступ к контенту с телевизора, откройте на нём браузер и введите в нём адрес домашней сети.
Подключение ноутбука к телевизору — лучший способ
Выделить среди всех перечисленных лучший вариант невозможно — ориентируйтесь на возможности вашей техники и собственные предпочтения. Если в ноутбуке и телевизоре есть HDMI-разъёмы, то этот интерфейс подойдёт вам лучше всего. Метод не требует дополнительных настроек — нужно просто соединить устройства кабелем. Подключение телевизора к ноутбуку через кабель VGA будет неплохой способом для менее современных устройств, но его главный недостаток — невозможность передавать звук. Также этот метод не поддерживает разрешение 4К.
Подключение с помощью Wi-Fi Direct или Miracast — лучший вариант беспроводного сопряжения, если ваш телевизор поддерживает такую функцию. В противном случае можно купить приставку Chromecast и транслировать экран через браузер Google Chrome.
Использование папки с общим доступом ограничено только расположенными в этой папке файлами. Например, в таком случае не получится одновременно играть и транслировать геймплей на экран телевизора, а также менять изображения в режиме реального времени. Но это хороший вариант для просмотра фильмов или фотографий, который не требует дополнительного оборудования.