Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 4
1

Dev C++ . Как по пикселям нарисовать изображение из файла .png или .bmp?

27.03.2018, 21:16. Просмотров 1392. Ответов 2


Я пишу один проект , в котором использую графику graphics.h
Мне нужно вывести в окно моей программы (которую я вызвал с помощью initwindow) изображение формата png или bmp (или другое)... так как winapi сложен для меня, то будет легче понять - как вывести изображение из файла по пикселям .
Есть идеи? если вы знаете путь попроще... буду рад выслушать. p.s(проект почти доделан , поэтому от graphics.h я не могу отвязаться!)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2018, 21:16
Ответы с готовыми решениями:

Как загрузить png изображение из файла ресурсов
пробую так: Image1->Picture->RCDATA->LoadFromResourceName((int)HInstance, "H_A"); файл ресурсов...

Преобразовать JPG или PNG в BMP
Есть код: if(clk == "jpg" || clk == "JPG" || clk == "JPEG" || clk == "jpeg") { try { ...

Как добавить изображение на кнопку в формате png или ico и чтобы поддерживалась прозрачность?
подскажите пожалуйста, как добавить изображение на кнопку в формате png или ico? желательно png....

Вращение TImage c PNG. Нужна переделка решения для BMP под PNG
Здравствуйте. Очень нужна помощь с вращением. Есть решение данной проблемы для формата bmp :...

2
8 / 5 / 7
Регистрация: 15.02.2018
Сообщений: 36
27.03.2018, 22:36 2
Anton15220, (OleLoadPicture)
Самый "официальный" способ. Появился вместе с OLE32 и работает до сих пор. Функции OleLoadPicture(Ex) и OleLoadPicturePath умеют загружать картинки в формате BMP, GIF, JPEG, ICO, WMF, и EMF:

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
#include <olectl.h>
    
    HRESULT Load(LPCTSTR szFile)
    {
        CComPtr<IStream> pStream;
        
        // Load the file to a memory stream
        HRESULT hr = FileToStream(szFile, &pStream);
 
        if (SUCCEEDED(hr))
        {
            // Decode the picture
            hr = ::OleLoadPicture(
                    pStream,            // [in] Pointer to the stream that contains picture's data
                    0,                    // [in] Number of bytes read from the stream (0 == entire)
                    true,                // [in] Loose original format if true
                    IID_IPicture,        // [in] Requested interface
                    (void**)&m_pPicture // [out] IPictire object on success
                    );
        }
 
        return hr;
    }
 
    HRESULT DrawImg(HDC hdc, const RECT& rcBounds)
    {
        if (m_pPicture)
        {
            // Get the width and the height of the picture
            long hmWidth = 0, hmHeight = 0;
            m_pPicture->get_Width(&hmWidth);
            m_pPicture->get_Height(&hmHeight);
 
            // Convert himetric to pixels
            int nWidth    = MulDiv(hmWidth, ::GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
            int nHeight    = MulDiv(hmHeight, ::GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);
 
            // Display the picture using IPicture::Render
            return m_pPicture->Render(
                hdc,                            // [in] Handle of device context on which to render the image
                rcBounds.left,                    // [in] Horizontal position of image in hdc
                rcBounds.top,                    // [in] Vertical position of image in hdc
                rcBounds.right - rcBounds.left,    // [in] Horizontal dimension of destination rectangle
                rcBounds.bottom - rcBounds.top, // [in] Vertical dimension of destination rectangle
                0,                                // [in] Horizontal offset in source picture
                hmHeight,                        // [in] Vertical offset in source picture
                hmWidth,                        // [in] Amount to copy horizontally in source picture
                -hmHeight,                        // [in] Amount to copy vertically in source picture
                &rcBounds                        // [in, optional] Pointer to position of destination for a metafile hdc
                );
        }
 
        return E_UNEXPECTED;
    }
0
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 4
02.04.2018, 14:53  [ТС] 3
А как я смогу воспользоваться Ole32 в graphics.h вызывая окно через initwindows... просто я не понял как это работает... объясните пожалуйста

Добавлено через 1 минуту
А как я смогу воспользоваться Ole32 в graphics.h вызывая окно через initwindows... просто я не понял как это работает... объясните пожалуйста..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2018, 14:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Рисование BMP-картинки по пикселям
Добрый день! получил задание нарисовать BMP-картинку, используя стандартную структуру BMP-файла и...

Как поверх иконки нарисовать изображение из файла?
Приветствуется любая инфа по сабжу. Задача изменить иконки в дереве в зависимости от свойств файла....

Изображение BMP-файла
Как попиксельно прочитать изображение BMP-файла т.е. без использования модулей, в частности...

Загрузить изображение из png-файла в массив пикселей
как загрузить изображение из png файла в массив пикселей?


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

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

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