Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 17.06.2021
Сообщений: 30

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

21.06.2021, 10:05. Показов 4165. Ответов 1
Метки c++, mfc (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть код, который читает файл, а после выводит изображение 8х16 по данным из буфера. Как мне вывести на экран сразу 3 изображения на расстоянии, скажем, 5 пикселей друг от друга?

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
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
   #include "stdafx.h"
#include "tes2.h"
#include "tes2Dlg.h"
 
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
unsigned char buff[10002];
int x,y;
int g,k,i,ii;
int n;
...
void Ctes2Dlg::OnPaint()
{
        CPaintDC dc(this); // device context for painting
    if (IsIconic())
    {
 
        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
 
        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;
 
        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
 
    }
    
    else
    {
 
 CFileDialog dlg(TRUE);
 
//    dlg.m_ofn.nMaxFile = 511;
 
//    dlg.m_ofn.lpstrFilter=_T("XML Files (*.xml)\0*.xml\0Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0\0");
 
//    dlg.m_ofn.lpstrTitle=_T("Save XML File As");
 
 
 
    CString filename;
 
 
 
    if(dlg.DoModal() == IDOK)
 
    {
 
        filename = dlg.GetPathName(); // return full path and filename
 
    }
 
 
       HANDLE hFile = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING /*OPEN_ALWAYS*/, 0, NULL);
       if (hFile == INVALID_HANDLE_VALUE)
       {
           ::MessageBox (NULL, _T("Ошибка открытия файла"), _T("Error"), MB_OK);
        
       }
       DWORD readbytes = GetFileSize (hFile, NULL);
       
       if (readbytes == INVALID_FILE_SIZE)
       {
            // error
           // ...
       }
 
      //
     // read
    //
       DWORD tmp = 0;
       BOOL b = ReadFile( hFile, buff, readbytes, &tmp, NULL);
       {
            
       }
}
    { COLORREF Color;
    g = buff[18];
    n = buff[22];
 
for (ii=0; ii<n; ii++)
        {
          for (i=0; i<g; i++)
              {
                int ofs = (n-1 -ii)*16+138 + 2*i;
 
                if (buff[ofs] < 100)
                {
                    Color=RGB (0, 0, 0);
                      } else  // иначе
                   {
                      Color=RGB (1000, 1000, 1000);
                     }
                SetPixel(dc,i,ii,Color); // рисуем каждый
                    
                
            }
            }
    }
    return;
}
 
// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR Ctes2Dlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}
Желательно кодом, я в С++ неочень разбираюсь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2021, 10:05
Ответы с готовыми решениями:

Вывод изображения WinAPI
Здравствуйте! Нужно сделать что-то типа графического редоктора, который накладывает фильтры на изображения. С алгоритмами я знаком, на C#...

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

Вывод изображения в консольную прогу
В общем,мне надо каким-нибудь образом вывести картинку(любого расширения) в определенную точку окна консольного приложения.Это изображение...

1
129 / 17 / 5
Регистрация: 23.03.2020
Сообщений: 103
23.06.2021, 09:02
Если в вашем блоке кода для вывода картинки
C++
1
2
3
4
5
for (ii=0; ii<n; ii++)
        {
          for (i=0; i<g; i++)
              {
                int ofs = (n-1 -ii)*16+138 + 2*i;
Прибавлять к i по 3 единицы за итерацию, то изображение грубо, но сожмется по горизонтали в три раза. Вам остается превратить массив buff[10002] в двухмерный массив buff[3][10002], чтобы можно было хранить три картинки, и немного поправить код, чтобы загружалось по три картинки и выводилось по три картинки(не забудьте делать отступы для второй и третьей картинки).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.06.2021, 09:02
Помогаю со студенческими работами здесь

Вывод изображения; стиль окна
Как в приложении win32 вывести на экран изображение (jpg, PNG); Как сменить стиль/цвет рамки окна(например, как в Skype)? ...

Вывод изображения одно внутри другого
Здравствуйте. Такая проблема. Вставил одно изображение в окно, затем вставляю второе сверху него и получаю белый квадрат, в котором это...

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru