Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/121: Рейтинг темы: голосов - 121, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
1

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

17.12.2015, 21:49. Показов 24129. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Среда разработки - Visual Studio 2015
Цель - вывести bmp картинку на экран
Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2015, 21:49
Ответы с готовыми решениями:

Вывод изображения на экран попиксельно
Доброго времени суток. У меня вот такой вопрос: можно ли передавать экрану массив, содержащий...

Вывод изображения .jpg на экран консоли C++
Вывод изображения .jpg на экран консоли C++ Помогите пожалуйста. Мне даже в голову ничего не...

Вывод bmp-шного изображения (картинки) на экран
Помогите мне пожалуйста!! Нужна простейшая программа, в окне которой выводится картинка, и...

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

27
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
17.12.2015, 22:30 2
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
switch (message)
    {
<...>
 
    case WM_CREATE:
        hBitmap = (HBITMAP)LoadImage(hInst, L"c:\\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        break;
    case WM_PAINT:
        PAINTSTRUCT     ps;
        HDC             hdc;
        BITMAP          bitmap;
        HDC             hdcMem;
        HGDIOBJ         oldBitmap;
 
        hdc = BeginPaint(hWnd, &ps);
 
        hdcMem = CreateCompatibleDC(hdc);
        oldBitmap = SelectObject(hdcMem, hBitmap);
 
        GetObject(hBitmap, sizeof(bitmap), &bitmap);
        BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
 
        SelectObject(hdcMem, oldBitmap);
        DeleteDC(hdcMem);
 
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        DeleteObject(hBitmap);
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
17.12.2015, 22:32  [ТС] 3
Можете пожалуйста поподробнее объяснить, как я понял нужно саму картинку в ресурсы программы загружать, что-то там прописывать, или как?
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
17.12.2015, 22:48 4
Она в WM_CREATE по пути загружается, зачем ресурсы?
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
17.12.2015, 23:17  [ТС] 5
А какие то библиотеки подключать нужно?
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
17.12.2015, 23:34 6
В Visual Studio пустое Win32 приложение создаете и в глобальных переменных описать hBitmap.
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
17.12.2015, 23:40  [ТС] 7
Как это сделать? Я не совсем понимаю. Приложение создано, ввожу код, изменяю путь к своему изображению, подключаю "windows.h", но выдает ошибки

Добавлено через 4 минуты
Смотрите, я сейчас работаю с приложением для часов, мне нужно туда еще картинку вставить, так вот я пытаюсь вставить этот код в функцию main, но появляются ошибки.
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
17.12.2015, 23:42 8
Может вы свой код полностью покажите и какие ошибки? Я не Ванга.
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
17.12.2015, 23:44  [ТС] 9
C++ (Qt)
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
#include "iostream"
#include "windows.h"
 
using namespace std;
COORD position;
HANDLE handleOut = GetStdHandle(STD_OUTPUT_HANDLE);
SYSTEMTIME Time;
bool tf = true;
int x = 0, y = 0;
 
 
 
 
void _0(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
void _1(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << " " << char(178) << char(178) << " ";
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << "  " << char(178) << " ";
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << "  " << char(178) << " ";
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << "  " << char(178) << "  ";
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << " " << char(178) << char(178) << char(178);
}
 
void _2(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "   ";
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
void _3(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
 
void _4(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
}
void _5(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "   ";
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
void _6(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "   ";
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
void _7(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << "  " << char(178) << " ";
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << " " << char(178) << "  ";
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << " " << char(178) << "  ";
}
void _8(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
void _9(int x, int y)
{
    position.X = x + 0;
    position.Y = y + 0;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << "  " << char(178);
    position.Y = y + 2;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << "   " << char(178);
    position.Y = y + 4;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178) << char(178) << char(178) << char(178);
}
void main()
{
    HANDLE out_handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD crd = { 50, 7 };
    SMALL_RECT src = { 0, 0, crd.X - 1, crd.Y - 1 };
    SetConsoleWindowInfo(out_handle, true, &src);
    SetConsoleScreenBufferSize(out_handle, crd);
    
 
 
 
 
x = 1;
    y = 1;
    system("color 0e");
    system("cls");
    position.X = 22 + x;
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178);
    position.X = 10 + x;
    position.Y = y + 1;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178);
    position.Y = y + 3;
    SetConsoleCursorPosition(handleOut, position);
    cout << char(178);
    while (true)
    {
        GetLocalTime(&Time);
        if (Time.wMinute == 0 || tf == true)
        {
            if (Time.wHour<10) _0(x, y);
            if (Time.wHour<20 && Time.wHour >= 10) _1(x, y);
            if (Time.wHour<30 && Time.wHour >= 20) _2(x, y);
            if (Time.wHour<40 && Time.wHour >= 30) _3(x, y);
            if (Time.wHour<50 && Time.wHour >= 40) _4(x, y);
            if (Time.wHour >= 50) _5(x, y);
            switch (Time.wHour % 10)
            {
            case 0: { _0(x + 5, y); break;}
            case 1: { _1(x + 5, y); break;}
            case 2: { _2(x + 5, y); break;}
            case 3: { _3(x + 5, y); break;}
            case 4: { _4(x + 5, y); break;}
            case 5: { _5(x + 5, y); break;}
            case 6: { _6(x + 5, y); break;}
            case 7: { _7(x + 5, y); break;}
            case 8: { _8(x + 5, y); break;}
            case 9: { _9(x + 5, y); break;}
            }
        }
        if (Time.wSecond == 0 || tf == true)
        {
            if (Time.wMinute<10) _0(x + 12, y);
            if (Time.wMinute<20 && Time.wMinute >= 10) _1(x + 12, y);
            if (Time.wMinute<30 && Time.wMinute >= 20) _2(x + 12, y);
            if (Time.wMinute<40 && Time.wMinute >= 30) _3(x + 12, y);
            if (Time.wMinute<50 && Time.wMinute >= 40) _4(x + 12, y);
            if (Time.wMinute >= 50) _5(x + 12, y);
            switch (Time.wMinute % 10)
            {
            case 0: { _0(x + 17, y); break;}
            case 1: { _1(x + 17, y); break;}
            case 2: { _2(x + 17, y); break;}
            case 3: { _3(x + 17, y); break;}
            case 4: { _4(x + 17, y); break;}
            case 5: { _5(x + 17, y); break;}
            case 6: { _6(x + 17, y); break;}
            case 7: { _7(x + 17, y); break;}
            case 8: { _8(x + 17, y); break;}
            case 9: { _9(x + 17, y); break;}
            }
        }
        if (Time.wSecond<10) _0(x + 24, y);
        if (Time.wSecond<20 && Time.wSecond >= 10) _1(x + 24, y);
        if (Time.wSecond<30 && Time.wSecond >= 20) _2(x + 24, y);
        if (Time.wSecond<40 && Time.wSecond >= 30) _3(x + 24, y);
        if (Time.wSecond<50 && Time.wSecond >= 40) _4(x + 24, y);
        if (Time.wSecond >= 50) _5(x + 24, y);
        switch (Time.wSecond % 10)
        {
        case 0: { _0(x + 29, y); break;}
        case 1: { _1(x + 29, y); break;}
        case 2: { _2(x + 29, y); break;}
        case 3: { _3(x + 29, y); break;}
        case 4: { _4(x + 29, y); break;}
        case 5: { _5(x + 29, y); break;}
        case 6: { _6(x + 29, y); break;}
        case 7: { _7(x + 29, y); break;}
        case 8: { _8(x + 29, y); break;}
        case 9: { _9(x + 29, y); break;}
        }
        if (Time.wSecond == 0) Sleep(500);
        else Sleep(460);
        tf = false;
    }
cin.get();
}
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
18.12.2015, 00:04 10
Лучший ответ Сообщение было отмечено Oleg-fire как решение

Решение

Дык это у вас консольное приложение.
Вот для вас примером создал только путь картинки свой подставьте у меня если на диске d с названием test.bmp
Вложения
Тип файла: 7z ProjectForExample.7z (9.79 Мб, 344 просмотров)
1
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
18.12.2015, 00:17  [ТС] 11
В Вашем приложении, меняю адрес - выдает белый экран...
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
18.12.2015, 00:23 12
На какой адрес меняете, покажите код.
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
18.12.2015, 00:24  [ТС] 13
Мне кажется эту картинку нужно в vs залить


C++ (Qt)
1
hBitmap = (HBITMAP)LoadImage(hInst, L"c:\\11.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
18.12.2015, 00:27 14
Попробуйте диск d: зачастую просто нет доступа в корень диска С.
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
18.12.2015, 00:35  [ТС] 15
Написал - все по прежнему, в ресурсы как то залить нужно фотографию? Как?

Добавлено через 1 минуту
Давайте по порядку - как мне добавить этот код в свою программу? Что залить в ресурсы? Объясните, пожалуйста
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
18.12.2015, 00:41 16
Да никак, у вас код для консольки, а это win32 приложение, заливать в ресурсы ничего не надо.
Что бы к вашему коду прикрутить показ картинки, то вам надо прикрутить Tk(Как вариант), создавать окно в коде и выводить в него картинку, как вариант.
По поводу пустого окна.
Почему у вас пустое окно получается я не знаю, потому что у меня все работает на ура, возможно пустой файл или программа не может получить доступ к диску С: попробуйте диск D: и проверьте что бы картинка была не пустой.
0
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
18.12.2015, 00:42  [ТС] 17
Какой файл мне из вашего архива открыть?
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
18.12.2015, 00:43 18
Вы уверены что у вас английская с в пути стоит?

Добавлено через 56 секунд
Цитата Сообщение от Oleg-fire Посмотреть сообщение
Какой файл мне из вашего архива открыть?
Распаковать архив и открыть студией проект файл с расширением .sln
1
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 26
18.12.2015, 00:45  [ТС] 19
Да, так же и с Д
0
$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
18.12.2015, 01:00 20
https://s.mail.ru/2XZSHbsZwCuC... -00-26.png
1
18.12.2015, 01:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2015, 01:00
Помогаю со студенческими работами здесь

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

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

Вывод изображения на экран
Написать программу, которая выводит на экран данное изображение

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru