Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.85
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
#1

открыть изображение в консоли - C++

20.04.2013, 12:15. Просмотров 5288. Ответов 30
Метки нет (Все метки)

Доброго времени суток.
Мне нужно при выполнении программы в конце всех вычислений открыть картинку с результатами для сравнения. Открыть нужно в консоли, не через ShellExecute в отдельной программе. Картинка лежит в папке с файлом *.cpp и *.exe
Может кто знает, как это осуществить и вообще, можно ли такое сделать в c++?
Работаю в Dev-C++.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2013, 12:15     открыть изображение в консоли
Посмотрите здесь:

Изображение на консоли - C++
Возможно ли вывести на консоль трехмерное изображение? С помощью ассемблера, например. Или Си.

Возможно ли открыть консоль из консоли в С++? - C++
Возможно ли открыть консоль из консоли в С++?

Открыть COM порт, введя его имя в консоли - C++
пишу небольшую программку для опроса COM порта. Номер порта ввожу из консоли: // CA2.cpp: определяет точку входа для консольного...

Открыть изображение, на котором бы были ссылки (кнопки) для запуска программ. С чего начать? - C++
Подскажите пожалуйста! Хочу создать приложение, которое бы открывало изображение, на которм бы были ссылки(кнопки) для запуска программ.С...

шрифт в консоли - C++
как увеличить или уменьшить шрифт в консоли?

Анимация в консоли - C++
Как вы делаете анимацию в консоли? Я просто очищал екран вызывал метод который выводил все на екран но оно начиет мигать и как-то не...

Ctrl+Z в консоли - C++
Нужно написать примерно такое дело: чтобы консольное приложение на C++ при нажатии сочетания клавиш Ctrl+Z делало определённые действия (по...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
20.04.2013, 12:27     открыть изображение в консоли #2
ShellExecute( NULL, "open", "image.png", NULL, NULL, SW_SHOWNORMAL );
phantom96
MЫW
124 / 109 / 1
Регистрация: 15.02.2013
Сообщений: 538
20.04.2013, 12:45     открыть изображение в консоли #3
Вы что, внутри консоли ничего не откроется. Как минимум нужно создавать своё окно для картинки.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
20.04.2013, 12:47     открыть изображение в консоли #4
Цитата Сообщение от yTpO Посмотреть сообщение
в отдельной программе
...
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,250
Записей в блоге: 1
Завершенные тесты: 1
20.04.2013, 13:04     открыть изображение в консоли #5
В консоле можно точно так же легко рисовать, как в гуевом окне, в т.ч. можно выводить картинки. Я точно не помню как это делается, почитай про контекст устройства и что-нибудь типа BitBlt().
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 13:09     открыть изображение в консоли #6
Грузим картинку в BITMAP с совместимым контекстом, потом BitBlt с созданного контекста на контекст консоли.
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
20.04.2013, 13:15     открыть изображение в консоли #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от phantom96 Посмотреть сообщение
Вы что, внутри консоли ничего не откроется. Как минимум нужно создавать своё окно для картинки.
Да ну !!! А это как же ?
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
81
82
83
84
85
86
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <conio.h>
#include <iostream>
 
void DrawBitmap(HDC hdc, int x, int y, HBITMAP hBitmap)
{
        HBITMAP hbm, hOldbm;
        HDC hMemDC;
        BITMAP bm;
        POINT ptSize, ptOrg;
 
        // ÑîçäГ*ГҐГ¬ ГЄГ®Г*ГІГҐГЄГ±ГІ ГЇГ*ìÿòè, ñîâìåñòèìûé
        // Г± ГЄГ®Г*òåêñòîì îòîáðГ*æåГ*ГЁГї
        hMemDC = CreateCompatibleDC(hdc);
 
        // ÂûáèðГ*ГҐГ¬ èçîáðГ*æåГ*ГЁГҐ bitmap Гў ГЄГ®Г*ГІГҐГЄГ±ГІ ГЇГ*ìÿòè
        hOldbm = (HBITMAP)SelectObject(hMemDC, hBitmap);
 
        // Åñëè Г*ГҐ áûëî îøèáîê, ïðîäîëæГ*ГҐГ¬ Г°Г*áîòó
        if (hOldbm)
        {
                // Äëÿ ГЄГ®Г*ГІГҐГЄГ±ГІГ* ГЇГ*ìÿòè ГіГ±ГІГ*Г*Г*âëèâГ*ГҐГ¬ òîò æå
                // ðåæèì îòîáðГ*æåГ*ГЁГї, Г·ГІГ® èñïîëüçóåòñÿ Гў
                // ГЄГ®Г*ГІГҐГЄГ±ГІГҐ îòîáðГ*æåГ*ГЁГї
                SetMapMode(hMemDC, GetMapMode(hdc));
 
                // Îïðåäåëÿåì Г°Г*çìåðû èçîáðГ*æåГ*ГЁГї
                GetObject(hBitmap, sizeof(BITMAP), (LPSTR) &bm);
 
                ptSize.x = bm.bmWidth;  // øèðèГ*Г*
                ptSize.y = bm.bmHeight; // âûñîòГ*
 
                // ÏðåîáðГ*çóåì êîîðäèГ*Г*ГІГ» óñòðîéñòâГ* Гў ëîãè÷åñêèå
                // äëÿ óñòðîéñòâГ* âûâîäГ*
                DPtoLP(hdc, &ptSize, 1);
 
                ptOrg.x = 0;
                ptOrg.y = 0;
 
                // ÏðåîáðГ*çóåì êîîðäèГ*Г*ГІГ» óñòðîéñòâГ* Гў ëîãè÷åñêèå
                // äëÿ ГЄГ®Г*ГІГҐГЄГ±ГІГ* ГЇГ*ìÿòè
                DPtoLP(hMemDC, &ptOrg, 1);
 
                // ГђГЁГ±ГіГҐГ¬ èçîáðГ*æåГ*ГЁГҐ bitmap
                BitBlt(hdc, x, y, ptSize.x, ptSize.y,
                        hMemDC, ptOrg.x, ptOrg.y, SRCCOPY);
 
                // ÂîññòГ*Г*Г*âëèâГ*ГҐГ¬ ГЄГ®Г*ГІГҐГЄГ±ГІ ГЇГ*ìÿòè
                SelectObject(hMemDC, hOldbm);
        }
 
        // ÓäГ*ëÿåì ГЄГ®Г*ГІГҐГЄГ±ГІ ГЇГ*ìÿòè
        DeleteDC(hMemDC);
}
 
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
 
 static HBITMAP hBitmap;
 PAINTSTRUCT ps;    
 
     static char MyName[MAX_PATH]={0};
 
     GetModuleFileNameA(NULL, MyName, sizeof(MyName));
    HWND hwnd=FindWindow(NULL,MyName);
HDC hdc;
hdc=GetWindowDC(hwnd);
 
    hBitmap = (HBITMAP)LoadImage(NULL, "1.bmp", IMAGE_BITMAP, 100, 100, LR_LOADFROMFILE);
 
std::cout<<"Hello world !!!"<<"\n";
 
    InvalidateRect(hwnd,NULL,TRUE);
 
 
                hdc=BeginPaint(hwnd,&ps);
                DrawBitmap(hdc, 0,20,hBitmap);
                EndPaint(hwnd,&ps);
 
  getch();
 
    return EXIT_SUCCESS;
 
}
Миниатюры
открыть изображение в консоли  
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 14:03  [ТС]     открыть изображение в консоли #8
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Да ну !!! А это как же ?
Вот, что у меня выводит на ваш код. ничего не менял. В чём проблема?

открыть изображение в консоли
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 14:07  [ТС]     открыть изображение в консоли #9
Игорь с++, а можно использовать только .BMP или любые форматы изображений?
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 14:50     открыть изображение в консоли #10
yTpO, потребуется "раскорячить" фаил вручную.

Добавлено через 1 минуту
yTpO, текст ошибок какой?
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 15:01  [ТС]     открыть изображение в консоли #11
Croessmah, я же скрин выше кинул. при компилировании кидает ряд ошибок.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 15:24     открыть изображение в консоли #12
yTpO, Лично я не могу сейчас открыть скрин, поэтому и спросил
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 15:39  [ТС]     открыть изображение в консоли #13
Croessmah, аа. ну вот:
Код
In function `Z10DrawBitmapP5HDC(int, int, HBITMAP__ *)':
			[Linker error] C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:15: undefined reference to `CreateCompatibleDC@4'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x125):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:18: undefined reference to `SelectObject@8'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x140):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:26: undefined reference to `GetMapMode@4'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x152):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:26: undefined reference to `SetMapMode@8'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x16f):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:29: undefined reference to `GetObjectA@12'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x198):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:36: undefined reference to `DPtoLP@12'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x1c3):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:43: undefined reference to `DPtoLP@12'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x20a):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:46: undefined reference to `BitBlt@36'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x21f):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:50: undefined reference to `SelectObject@8'
			[Linker error] C:\Users\6020\AppData\Local\Temp/ccs3daaa.o(.text+0x22d):C:/Users/6020/Pictures/кусрач/Безымянный1.cpp:54: undefined reference to `DeleteDC@4'
			collect2: ld returned 1 exit status
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 16:19     открыть изображение в консоли #14
Линкуйте с GDI библиотекой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 18:57     открыть изображение в консоли
Еще ссылки по теме:

Русик консоли - C++
Я конешно понимаю что поднимаю эту тему тысячный раз, но все таки: пишу на wxDev-C++ для русификации код: #include &lt;iostream&gt; ...

Псевдографика в консоли - C++
Доброе время суток! Ставил значит на днях Boost, через mac port и увидел очень занятную &quot;псевдографику&quot;. Сразу захотелось себе ее...

Магазин в консоли - C++
#include&lt;iostream&gt; using namespace std; class system_bloc { private: char *proc ; int cina_proc; char *mother; int...

Графика в консоли - C++
Здравствуйте, подскажите пожалуйста, можно ли в консоли с++ устроить графический интерфейс небольшой, например, расстоновка знаков в...

Кодировка в консоли - C++
Добрый день , имея некоторый опыт программирования на c# решил так же изучить С++, однако при написании простейшей программ (консольные...


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

Или воспользуйтесь поиском по форуму:
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 18:57  [ТС]     открыть изображение в консоли #15
Croessmah, не понял вас
Yandex
Объявления
20.04.2013, 18:57     открыть изображение в консоли
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru