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

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

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

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

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

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

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

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

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

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

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

30
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.04.2013, 12:27 #2
ShellExecute( NULL, "open", "image.png", NULL, NULL, SW_SHOWNORMAL );
0
phantom96
MЫW
124 / 109 / 1
Регистрация: 15.02.2013
Сообщений: 538
20.04.2013, 12:45 #3
Вы что, внутри консоли ничего не откроется. Как минимум нужно создавать своё окно для картинки.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.04.2013, 12:47 #4
Цитата Сообщение от yTpO Посмотреть сообщение
в отдельной программе
...
0
Kastaneda
Нарушитель
Эксперт С++
4669 / 2875 / 232
Регистрация: 12.12.2009
Сообщений: 7,306
Записей в блоге: 2
Завершенные тесты: 1
20.04.2013, 13:04 #5
В консоле можно точно так же легко рисовать, как в гуевом окне, в т.ч. можно выводить картинки. Я точно не помню как это делается, почитай про контекст устройства и что-нибудь типа BitBlt().
0
Croessmah
Эксперт CЭксперт С++
13508 / 7666 / 866
Регистрация: 27.09.2012
Сообщений: 18,863
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 13:09 #6
Грузим картинку в BITMAP с совместимым контекстом, потом BitBlt с созданного контекста на контекст консоли.
0
Игорь с++
436 / 459 / 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;
 
}
3
Миниатюры
открыть изображение в консоли  
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 14:03  [ТС] #8
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Да ну !!! А это как же ?
Вот, что у меня выводит на ваш код. ничего не менял. В чём проблема?

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

Добавлено через 1 минуту
yTpO, текст ошибок какой?
0
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 15:01  [ТС] #11
Croessmah, я же скрин выше кинул. при компилировании кидает ряд ошибок.
0
Croessmah
Эксперт CЭксперт С++
13508 / 7666 / 866
Регистрация: 27.09.2012
Сообщений: 18,863
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 15:24 #12
yTpO, Лично я не могу сейчас открыть скрин, поэтому и спросил
0
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
0
Croessmah
Эксперт CЭксперт С++
13508 / 7666 / 866
Регистрация: 27.09.2012
Сообщений: 18,863
Записей в блоге: 3
Завершенные тесты: 1
20.04.2013, 16:19 #14
Линкуйте с GDI библиотекой
0
yTpO
5 / 5 / 0
Регистрация: 15.03.2013
Сообщений: 67
20.04.2013, 18:57  [ТС] #15
Croessmah, не понял вас
0
20.04.2013, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 18:57
Привет! Вот еще темы с ответами:

Вывести множество цифр, входящих в изображение числа N, которые не входят в изображение числа M - C++
Помогите пожалуйста Сама задача &quot; Пусть заданы два натуральных числа N и M. Составить программу, которая выводила множество цифр,...

Нарисовать в консоли изображение по псевдографическому образцу - C++ Builder
Не казните, за не опытность помогите кто чем может Воооообщем СУТЬ: Есть 1.TXT в нем картиночка символами нарисованная так нужен код...

Как открыть консоль из консоли - C#
Есть решение из двух консольных CLR проектов. Как из одного окна запустит другое и выводить в нём текст.

Как из консоли открыть консоль? - C#
Можно ли на время из консоли создать консоль и вывести в нее текст,а потом снова ее удалить


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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