Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 11

Консольное приложение: как воспроизвести gif на фоне ?

13.11.2018, 12:28. Показов 4674. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
приветствую
мне хотелось бы знать , возможно ли в консольном приложении на фоне воспроизвести gif файл ?
сам он лежит в файле ресурсов
делаю в visual studio 2013
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2018, 12:28
Ответы с готовыми решениями:

Как в SplashScreen воспроизвести gif анимацию ?
Всем привет! Захотел сделать экран заставки для формы при помощи SplashScreen: var Preloader = new...

Как в WPF воспроизвести файлы в формате *.gif?
С помощью какого инструмента WPF можно воспроизвести файлы в формате *.gif?

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

17
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
13.11.2018, 12:33
И как вот ты себе представляешь вывод графики туда, что создано для текстового режима?
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 11
13.11.2018, 12:40  [ТС]
но проигрывание музыки то я смог

Добавлено через 1 минуту
значит и с gif найдется способ
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
13.11.2018, 12:42
Музыка у тебя не консолью воспроизводится, а устройствами вывода: колонками.
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 11
13.11.2018, 13:03  [ТС]
а с помощью WINAPI не получится ?

Добавлено через 14 минут
вот через
C++
1
PlaySound
можно вывести звук
а изображение через что?
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
13.11.2018, 13:30
Цитата Сообщение от Nishen Посмотреть сообщение
И как вот ты себе представляешь вывод графики туда, что создано для текстового режима?
как то так, Бро:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <conio.h>
 
void main()
{
   // получаем идентификатор окна
   HWND hwnd = GetConsoleWindow();
 
   // получаем контекст отображения
   HDC hdc = GetDC(hwnd);
 
   RECT rt;
 
   char buf[100];
 
   // устанавливаем цвет фона
   SetBkColor(hdc, RGB(0, 0, 0));
 
   // устанавливаем цвет текста
   SetTextColor(hdc, RGB(255, 0, 0));
 
   // создаем красное перо
   HPEN hRedPen = CreatePen(PS_SOLID, 5, RGB(255, 0, 0));
 
   // и выбираем его в контекст отображения,
   // сохраняя предыдущее перо
 
   HPEN hOldPen = SelectPen(hdc, hRedPen);
 
   // создаем зеленую кисть
   HBRUSH hGreenBrush = CreateSolidBrush(RGB(0, 255, 0));
 
   // и выбираем ее в контекст отображения,
   // сохраняя предыдущую кисть
   HBRUSH hOldBrush = SelectBrush(hdc, hGreenBrush);
 
   // выводим строку стандартными средствами
   printf("Graphics in Console Window.");
 
   do {
 
       // получаем размер окна
       GetClientRect(hwnd, &rt);
 
       // формируем выводимую строку
       sprintf(buf, "Размер окна %d на %d пикселей", rt.right, rt.bottom);
 
       // выводим строку графическими средствами
       TextOutA(hdc, 10, 10, buf, strlen(buf));
 
       // рисуем закрашенный эллипс
       Ellipse(hdc, 10, 30, rt.right10, rt.bottom10);
 
   } while (getch() != 27); // при нажатии любой клавиши
 
   // (кроме Esc) перерисовываем изображение,
   // изображение изменится, если изменились размеры окна,
   // нажатие Esc – выход
   // выбираем в контекст отображения предыдущее перо
   SelectPen(hdc, hOldPen);
 
   // выбираем в контекст отображения предыдущую кисть
   SelectBrush(hdc, hOldBrush);
 
   // удаляем красное перо
   DeletePen(hRedPen);
 
   // удаляем зеленую кисть
   DeleteBrush(hGreenBrush);
 
   // освобождаем контекст отображения
   ReleaseDC(hwnd, hdc);
}
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
13.11.2018, 13:35
ShowImage попробуй.

Цитата Сообщение от eva2326 Посмотреть сообщение
как то так, Бро:
Для себя это оставь и перечитай, чего хочет автор.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
13.11.2018, 13:53
Цитата Сообщение от Nishen Посмотреть сообщение
Для себя это оставь и перечитай, чего хочет автор.
Прочитала.
У вас проблемы какие-то?

Добавлено через 2 минуты
Цитата Сообщение от Nishen Посмотреть сообщение
И как вот ты себе представляешь вывод графики туда, что создано для текстового режима?
Вы не знаете, как вывести графику туда, что создано для текстового режима, Бро?
0
0 / 0 / 0
Регистрация: 12.11.2018
Сообщений: 11
13.11.2018, 14:14  [ТС]
мне нужно вывести изображение в фон консоли

Добавлено через 2 минуты
при чём изображение формата gif которое я занёс в файл ресурсов
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 230
13.11.2018, 14:48
Цитата Сообщение от Nishen Посмотреть сообщение
И как вот ты себе представляешь вывод графики туда, что создано для текстового режима?
В консоль можно выводить не только текст, но и графику. Я нагуглил примерчик:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <iostream>
 
int main()
{
    // Get window handle to console, and device context
    HWND console_handle = GetConsoleWindow();
    HDC device_context = GetDC(console_handle);
 
    //Here's a 5 pixels wide RED line [from initial 0,0] to 50,50
    HPEN pen = CreatePen(PS_SOLID, 5, RGB(255, 0, 0));
    SelectObject(device_context, pen);
    LineTo(device_context, 50, 50);
 
    ReleaseDC(console_handle, device_context);
    std::cin.ignore();
    return 0;
}
Название: DrawLine_ConsoleWinAPI.png
Просмотров: 127

Размер: 1.7 Кб
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
13.11.2018, 14:59
8Observer8, в обоих случаях изображение наносится поверх консоли, а не на её фоне. И затирается при введении символов.
То есть проще будет делать свою собственную консоль, чем пытаться перерисовывать при обработке каждого символа (?) или переписать сам обработчик вывода консоли (т.е. опять же делать свою собственную консоль)

eva2326, это не текстовый режим.
1
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
13.11.2018, 15:01
Цитата Сообщение от 8Observer8 Посмотреть сообщение
В консоль можно выводить не только текст, но и графику
Не в консоль, а на поверхность для рисования. Она есть у любого окна, можно хоть на рабочем столе рисовать (достаточно GetConsoleWindow заменить на GetDesktopWindow, а GetDC - на GetWindowDC).
Изображения
 
1
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
13.11.2018, 15:04
И затирается при выведении самой консолью символов.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
13.11.2018, 15:11
Цитата Сообщение от eva2326 Посмотреть сообщение
как то так, Бро:
Вот так делать не надо. Окно консоли не для рисования, а для вывода текста.
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 230
13.11.2018, 15:14
Цитата Сообщение от TRam_ Посмотреть сообщение
И затирается при введении символов.
Проблему затирания можно решить выводом пустых строк до вывода графики:
Название: DrawLine_ConsoleWinAPI_02.png
Просмотров: 117

Размер: 2.1 Кб

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
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <iostream>
 
int main()
{
    for (size_t i = 0; i < 4; i++)
    {
        std::cout << std::endl;
    }
 
    // Get window handle to console, and device context
    HWND console_handle = GetConsoleWindow();
    HDC device_context = GetDC(console_handle);
 
    //Here's a 5 pixels wide RED line [from initial 0,0] to 300,300
    HPEN pen = CreatePen(PS_SOLID, 5, RGB(255, 0, 0));
    SelectObject(device_context, pen);
    LineTo(device_context, 50, 50);
 
    ReleaseDC(console_handle, device_context);
    std::cin.ignore();
    return 0;
}
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 230
13.11.2018, 15:46
Цитата Сообщение от CABAL_NET Посмотреть сообщение
возможно ли в консольном приложении на фоне воспроизвести gif файл ?
Что значит "на фоне"? То есть выводится изображение, а на фоне (поверх) него вводится текст? Тогда нельзя, как объяснили выше текст будет затираться.

GIF можно перевести в BMP с помощью Paint. Я нагуглил пример, как на консоль выводить BMP изображения:

Название: PutABitmapImageOnYourConsole.png
Просмотров: 110

Размер: 2.7 Кб

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// put a bitmap image on a Windows Console display
// BCX basic original by Joe Caverly and Kevin Diggins
// BCX generated C code modified for PellesC/Dev-C++
 
#include <stdio.h>
#include <string.h>
#include <windows.h>    // Win32Api Header File
#include <tchar.h>
 
static HWND  hConWnd;
HWND BCX_Bitmap(TCHAR*, HWND = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0);
HWND GetConsoleWndHandle(void);
 
int main()
{
    hConWnd = GetConsoleWndHandle();
    if (hConWnd)
    {
        // select a bitmap file you have or use one of the files in the Windows folder
        // filename, handle, ID, ulcX, ulcY, width, height   0,0 auto-adjusts
        BCX_Bitmap(_T("TestImage.bmp"), hConWnd, 123, 1, 1, 0, 0);
 
        getchar();  // wait
    }
    return 0;
}
 
// draw the bitmap
HWND BCX_Bitmap(TCHAR* Text, HWND hWnd, int id, int X, int Y, int W, int H, int Res, int Style, int Exstyle)
{
    HWND A;
    HBITMAP hBitmap;
 
    // set default style
    if (!Style) Style = WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE | SS_BITMAP | WS_TABSTOP;
 
    // form for the image
    A = CreateWindowEx(Exstyle, _T("static"), NULL, Style, X, Y, 0, 0, hWnd, (HMENU)id, GetModuleHandle(0), NULL);
    // Text contains filename
    hBitmap = (HBITMAP)LoadImage(0, Text, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
    // auto-adjust width and height
    if (W || H) hBitmap = (HBITMAP)CopyImage(hBitmap, IMAGE_BITMAP, W, H, LR_COPYRETURNORG);
    SendMessage(A, (UINT)STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmap);
    if (W || H) SetWindowPos(A, HWND_TOP, X, Y, W, H, SWP_DRAWFRAME);
    return A;
}
 
// tricking Windows just a little ...
HWND GetConsoleWndHandle(void)
{
    HWND hConWnd;
    OSVERSIONINFO os;
    TCHAR szTempTitle[64], szClassName[128], szOriginalTitle[1024];
    os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&os);
    // may not work on WIN9x
    if (os.dwPlatformId == VER_PLATFORM_WIN32s) return 0;
    GetConsoleTitle(szOriginalTitle, sizeof(szOriginalTitle));
    // sprintf(szTempTitle, "%u - %u", GetTickCount(), GetCurrentProcessId());
    SetConsoleTitle(szTempTitle);
    Sleep(40);
    // handle for NT and XP
    hConWnd = FindWindow(NULL, szTempTitle);
    SetConsoleTitle(szOriginalTitle);
    // may not work on WIN9x
    if (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
    {
        hConWnd = GetWindow(hConWnd, GW_CHILD);
        if (hConWnd == NULL) return 0;
        GetClassName(hConWnd, szClassName, sizeof(szClassName));
        // while ( _stricmp( szClassName, "ttyGrab" ) != 0 )
        while (_tcscpy(szClassName, _T("ttyGrab")) != 0)
        {
            hConWnd = GetNextWindow(hConWnd, GW_HWNDNEXT);
            if (hConWnd == NULL) return 0;
            GetClassName(hConWnd, szClassName, sizeof(szClassName));
        }
    }
    return hConWnd;
}
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
13.11.2018, 15:50
Цитата Сообщение от TRam_ Посмотреть сообщение
это не текстовый режим
в след. раз внимательнее будь, Бро
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 230
13.11.2018, 15:59
Цитата Сообщение от CABAL_NET Посмотреть сообщение
Консольное приложение: как воспроизвести gif на фоне ?
Если под словом "воспроизвести" имеется ввиду вывести gif-анимацию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.11.2018, 15:59
Помогаю со студенческими работами здесь

Как воспроизвести gif анимацию с первого кадра при перезагрузке страницы или перезагрузить изображение?
Есть некое изображение img.gif с анимацией логотипа длительностью 4 секунды. Оно подгружается на страницу в качестве прелоада, в виде...

Приложение в фоне или как свернуть приложение?
Робота приложения в фоне или как свернуть приложение. может уже кто сталкивался и разобрался? а то я ничего не нашел(

Как воспроизвести *.gif под Linux-ом и ошибка "identifier not found FileOpenUTF8"
Добрый день. Нужно в форме проиграть gif-анимацию. Работаю я под Ubuntu. Как оказалось, компонент GIFImage работает ток под Виндой. ...

Воспроизвести gif анимацию на форме
есть задача к дню победы сделать танк который по нажатиям на клавиши стрелки вправо, влево передвигаеться (Сделал) а при нажатие...

Как переделать консольное приложение в приложение с GUI?
Есть приложение, работающее в консоли, захотелось сделать с графическим интерфейсом, уперся в непонимание) Объясните, как: а) заменить...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru