Перейти к содержимому

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

  • автор:

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

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

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

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

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

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

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

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

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как максимально быстро вывести на экран картинку в Windows 7 через winapi на Си?

Крайне важна высокая скорость вывода на экран, т. к. картинками буду рисовать элементы интерфейса моей программы. Я пока нашёл один подходящий способ: картинка в .bmp файле, в начале работы программы она будет загружена в память через LoadImage(), хранится там всё время, пока работает программа и выводится на экран при необходимости с помощью BitBlt(). Вот кусок кода из инета, который у меня работает:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) < PAINTSTRUCT ps; HDC hdc; static HDC memBit; static HBITMAP hBitmap; static BITMAP bm; switch (message) < case WM_CREATE: hBitmap = (HBITMAP)LoadImage(NULL, TEXT("1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); GetObject(hBitmap, sizeof(bm), &bm); hdc = GetDC(hWnd); memBit = CreateCompatibleDC(hdc); SelectObject(memBit, hBitmap); ReleaseDC(hWnd, hdc); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); BitBlt(hdc, 0, 0, 265, 175, memBit, 0, 0, SRCCOPY);//вывлд изображения EndPaint(hWnd, &ps); break; . 

Вопрос: можно ли выводить картинку на экран быстрее, или использовать этот код?
Отслеживать
задан 8 авг 2015 в 9:44
371 2 2 серебряных знака 12 12 бронзовых знаков

Не верю, что вы реально упираетесь в производительность скорости вывода картинки. Если, конечно, вы пишете не под Пентиум-2.

8 авг 2015 в 10:28

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Строго говоря под WinApi другого способа и не предусмотрено, ну да ладно.

По идее ваш метод будет работать очень быстро. Камушком может стать то, что система выгрузит растр из видео в системную память. В этом, случае можно сильно потерять на трансфере. В DirectX есть возможность явно указать где хранить картинку в видео или системной памяти и гарантированно избежать такого развития. Хотя с другой стороны, при сегодняшних объемах памяти очень маловероятно что растр погрузится в системную память.

Рекомендую вам оставить как есть, если станет лагать тогда и думать про директиксы и опенджиэли.

Если проект строго под винду, то OpenGL использовать не стоит, поумолчанию он будет медленее DirectX.

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

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

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

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

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

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

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

3802 / 2354 / 413
Регистрация: 09.09.2017
Сообщений: 10,208

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

вывести картинку на экран

Конечно нубский вопрос но все таки.
есть картинка. нужно ее вывести на экран. но как ? Может есть какие нибудь не стандартные библиотеки например OpenGL ?

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

Вывести на экран заданную картинку, отладив (исправив) имеющуюся программу в С++
Проба была. синтаксически программу исправила. работаю в Dev-C++ В качестве ошибок выполнения.

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

Вывести на экран картинку из объекта
Добрый день. У меня есть объект CompImg= new img; Указал ему путь к картикне CompImg.src=. ;.

Не вывести картинку из BMP файла на экран
Всем привет! 🙂 Всё перерыл-перепробовал, две недели бьюсь - ничего не выходит 🙁 Я понимаю, что не.

106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
Начнем с простого: какая операционная система и какой язык программирования?
Регистрация: 23.07.2011
Сообщений: 14
ах да совсем забыл. с++. ubuntu
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
Qt проще всего. Там есть QImage
Регистрация: 23.07.2011
Сообщений: 14
блин. я использую эклипс.
403 / 359 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
nickionn, при чем тут эклипс?
Регистрация: 23.07.2011
Сообщений: 14

aram_gyumri, да я сначала про gt creator подумал

Добавлено через 33 минуты
а есть еще способы?

403 / 359 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
gtk+,fltk,fox toolkit,wxwidgets,opengl

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

12243 / 7373 / 1734
Регистрация: 25.07.2009
Сообщений: 13,521

Лучший ответ

Сообщение было отмечено как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include  #define PICT_NAME "picture.jpg" int main(int argc, char ** argv){ GtkWidget * win; GtkWidget * img; gtk_init(&argc, &argv); win = gtk_window_new(GTK_WINDOW_TOPLEVEL); img = gtk_image_new_from_file(PICT_NAME); gtk_window_set_title(GTK_WINDOW(win), PICT_NAME); gtk_window_set_default_size(GTK_WINDOW(win), 560, 539); gtk_container_add(GTK_CONTAINER(win), img); gtk_widget_show_all(win); g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main(); return 0; }

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

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