Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2012, 18:40   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Работа с изображениями, как?

Вопрос в следующем.
Как использовать изображения в программе?
Например вывести изображение в окошке, узнать цвет нужного пикселя к примеру.


Нашел Bitmap class, но это C# насколько я понял, для C++ это Image class.
Но вот чего-то не понимаю как с ним работать.
Не могли бы пару простых примеров подкинуть?

Последний раз редактировалось L6go1as; 27.01.2012 в 18:46.
L6go1as вне форума Ответить с цитированием
Старый 27.01.2012, 18:42   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в самом С++ нету классов для этого.
ищите библиотеки(и Bitmap и Image скорее всего классы из dotNET)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.01.2012, 18:49   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Ну вроде бы GdiPlus.h ? Не?
L6go1as вне форума Ответить с цитированием
Старый 28.01.2012, 00:43   #4
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию

Вот пример вывода изображения на WinAPI (файл с изображением имеет имя "Image.bmp" и находится в одной директории с программой):
Код:
#include "windows.h"
#include <iostream>

LRESULT CALLBACK DCDemoWndProc(HWND,UINT,UINT,LONG);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow)
{
    HWND hWnd;
    WNDCLASS WndClass;
    MSG Msg;
    char szClassName[]="DCDemo";
    WndClass.style=CS_HREDRAW|CS_VREDRAW;
    WndClass.lpfnWndProc=DCDemoWndProc;
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
    WndClass.hInstance=hInstance;
    WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hbrBackground=(HBRUSH)(LTGRAY_BRUSH);
    WndClass.lpszMenuName=NULL;
    WndClass.lpszClassName=szClassName;
    if (!RegisterClass(&WndClass))
    {
        MessageBox(NULL,"Cannot register class","Error",MB_OK);
        return 0;
    }
    hWnd=CreateWindow(szClassName,"Programm",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    if (!hWnd)
    {
        MessageBox(NULL,"Cannot create window","Error",MB_OK);
        return 0;
    }
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
    while(GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}

LRESULT CALLBACK DCDemoWndProc(HWND hWnd,UINT Message,UINT wParam,LONG IParam)
{
    static HANDLE hBitmap;
    static BITMAP Bitmap;
    HDC hDC,hCompatibleDC;
    PAINTSTRUCT PaintStruct;
    HANDLE hOldBitmap;
    RECT Rect;
    switch(Message)
    {
        case WM_CREATE:
        hBitmap=LoadImage(NULL/*Хендл программы*/,"Image.bmp"/*Адрес загружаемого обьекта*/,IMAGE_BITMAP/*Тип образа*/,0/*Ширина*/,0/*Высота*/,LR_LOADFROMFILE/*Определение режима загрузки обьекта*/);//Получение хендла битмэпа
        GetObject(hBitmap,sizeof(BITMAP),&Bitmap);//Получение информации о битмэпе
        case WM_PAINT:
        GetClientRect(hWnd,&Rect);//Получение информации о рабочей области окна
        hDC=BeginPaint(hWnd,&PaintStruct);//Получение хендла контекста устройства
        hCompatibleDC=CreateCompatibleDC(hDC/*Хендл контекста, для которого создаётся совместимый контекст*/);//Создание совместимого контекста
        hOldBitmap=SelectObject(hCompatibleDC/*Хендл совместимого контекста, в котором размещается текущий элемент*/,hBitmap/*Хендл элемента, которым замещается текущий элемент*/);//Функция, возвращающая хендл замещённого элемента
        StretchBlt(hDC/*Хендл окна*/,0/*Смещение по оси x*/,0/*Смещение по оси y*/,Rect.right/*Ширина прямоугольника*/,Rect.bottom/*Высота прямоугольника*/,hCompatibleDC/*Хендл совместимого контекста*/,0,0,Bitmap.bmWidth/*Ширина отображаемой части*/,Bitmap.bmHeight/*Высота отображаемой части*/,SRCCOPY);
        SelectObject(hCompatibleDC,hOldBitmap);
        DeleteDC(hCompatibleDC);//Удаление совместимого контекста
        EndPaint(hWnd,&PaintStruct);//Удаление контекста устройства
        return 0;
        case WM_DESTROY:
        DeleteObject(hBitmap);//Удаление обьекта
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWnd,Message,wParam,IParam);
}
БалаШагаЛ вне форума Ответить с цитированием
Старый 28.01.2012, 00:45   #5
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию

Ещё вот сюда посмотрите.
БалаШагаЛ вне форума Ответить с цитированием
Старый 28.01.2012, 01:22   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GDIPLUS это АПИ, не более.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.01.2012, 01:32   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
GDIPLUS это АПИ, не более.
Ну просто человек не различает разницу между "технологией" и "языком". Возможно - последствия опыта RAD программирования.
_Bers вне форума Ответить с цитированием
Старый 28.01.2012, 11:40   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
Ну просто человек не различает разницу между "технологией" и "языком".
А API это по вашемы язык?
counter вне форума Ответить с цитированием
Старый 28.01.2012, 11:49   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
А API это по вашемы язык?
в том то и дело что нет.

ну ТС, можете применять в принципе и эту библиотечку
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.01.2012, 16:08   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
А API это по вашемы язык?
По-моему, API - это Application programming interface.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с изображениями cheef PHP 6 17.03.2011 16:44
Работа с изображениями С++ cyberandom Помощь студентам 15 13.12.2010 14:28
Работа с изображениями C# _PROGRAMM_ Общие вопросы .NET 4 16.02.2010 16:38
работа с изображениями. borodaj Мультимедиа в Delphi 3 21.04.2007 19:21