Как вывести изображение на экран c
Перейти к содержимому

Как вывести изображение на экран c

  • автор:

Как вывести изображение на экран 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 .

Вывод изображения на экран

Как вывести изображение на экран юзеру, при этом изображение должно быть поверх окон.

Отслеживать
задан 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
29.2k 5 5 золотых знаков 28 28 серебряных знаков 55 55 бронзовых знаков

  • c++
  • windows
  • winapi
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.3.1.5619

Вывод изображения на экран

Author24 — интернет-сервис помощи студентам

Ребят, как можно вывести изображение формата jpeg, png, bmp? Какие библиотеки для этого нужны или есть где-нибудь подробная инструкция? Это сложно?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вывод на экран изображения фигур (Ромб вписан в треугольник)
как написать программу вывода на экран изображения фигур(Ромб вписан в треугольник)?Объясните.

Вывод изображения на экран
Подскажите как справиться с задачей! Нужно вывести изображение треугольника с заданными.

Вывод изображения на экран
Здравствуйте! Пишу программу в консольном приложении Win32 на С++. Подскажите пожалуйста, как.

Вывод изображения на экран
Нужно вывести изображение .png без рамки (голая картинка без окна, и соответственно рамок и.

3870 / 2463 / 418
Регистрация: 09.09.2017
Сообщений: 10,759

Средствами языка это сделать невозможно: в Си нет стандартных функций рисования. Открыть графический файл как бинарный и разбирать формат можно, конечно, но неэффективно.
Значит, нужно выбрать графическую библиотеку, которой будете пользоваться. А это зависит от конечной цели, которую перед собой ставите:
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. Вывести его на экран путём случайного.

Вывод на экран графического изображения
вывод на экран графического изображения на экран. Каждый элемент фигуры должен быть закрашен в свой.

Или воспользуйтесь поиском по форуму:

Как сделать скриншот экрана на компьютере или ноутбуке Samsung с Windows

Если вам нужно сфотографировать содержимое экрана на компьютере или ноутбуке, вы можете сделать скриншот. На ноутбуках и компьютерах под управлением ОС Windows это можно сделать несколькими способами:

  1. С помощью клавиши Print Screen
  2. С помощью комбинации клавиш Win + Shift + S
  3. Без клавиатуры

Если вам нужно сделать скриншот на телефоне Samsung Galaxy, воспользуйтесь статьей ниже.

С помощью клавиши Print Screen

На любой клавиатуре предусмотрена специальная клавиша для скриншотов – Print Screen. Обычно она располагается в правой части клавиатуры.

Иногда клавиша Print Screen может быть подписана иначе, например: «PrntScrn», «PrtScn», «PrtScr» или «PrtSc».

На компьютере: Нажмите на клавишу Print Screen.

На ноутбуке или компактной клавиатуре: Одновременно нажмите клавиши Fn и Print Screen.

Визуально на экране ничего не изменится, но ваш компьютер «запомнит» содержимое экрана.

Когда вы делаете скриншот таким способом, он автоматически сохраняется в буфер обмена – временное хранилище, откуда вы можете вставить снимок в редактор, письмо или сообщение.

Чтобы сохранить его в отдельный файл, выполните следующее:

1 Откройте любой графический редактор, например, Paint.

Найти программу можно двумя способами:

  • нажмите Пуск и введите «Paint»;
  • найдите программу вручную: Пуск → Стандартные → Paint.

2 Нажмите комбинацию клавиш Ctrl+V или щелкните правой кнопкой мыши на холсте (белая область редактора) и выберите Вставить.

3 Снимок экрана появится в окне приложения. Чтобы сохранить его, нажмите комбинацию клавиш Ctrl+S или выберите Файл → Сохранить как.

4 Укажите место сохранения, введите имя файла и нажмите Сохранить.

Готово. Файл со снимком экрана появится в указанной папке.

С помощью комбинации клавиш Win + Shift + S

Если вы не можете найти клавишу Print Screen на клавиатуре вашего устройства, используйте сочетание Win + Shift + S – последовательно нажмите и удерживайте клавиши на клавиатуре.

В верхней части экрана появится панель инструментов. Выберите, каким способом вы хотите сделать снимок экрана:

  1. Прямоугольный фрагмент – обведите рамкой нужный объект,
  2. Фрагмент произвольной формы – нарисуйте любую фигуру вокруг нужного объекта,
  3. Фрагмент окна – нажмите на окно, которое требуется сфотографировать,
  4. Полноэкранный снимок – при выборе этой опции снимок экрана будет сделан автоматически.

Когда вы делаете снимок экрана таким способом, он автоматически сохраняется в буфер обмена – временное хранилище, откуда вы можете вставить снимок в редактор, письмо или сообщение.

В правом нижнем углу экрана появится окно с уведомлением от приложения «Набросок на фрагменте экрана». Нажмите на него, чтобы сохранить скриншот в отдельный файл.

Чтобы сохранить скриншот в отдельный файл, нажмите сочетание клавиш Ctrl+S или коснитесь значка с дискетой в правом верхнем углу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *