Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод bmp файла, как??? :) 
:(
    Опции темы
Еррор
Дата 30.5.2005, 13:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как работает PatBit() smile
  Вверх
Fixin
Дата 7.6.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата
Fixin
Через GetPixel задолбаешься получать
Согласен. smile

Цитата
Статья тут.
Cсылка неработает smile smile smile
Мне нужно получить, имея бмп файл и его палитру (8 бит изображение), массив COLORREF`ов.
Пробовал так:
Код
COLOREF * Data = new COLORREF[x*y];
        for (i = 0; i < x*y; i++)
        {            
            Data[i] = *(COLORREF*)(&Pal[ImgData[i]]);
        }
Картинку узнать можно, но выводится она, мягко говоря, плохо. Скорее всего, я не понимаю, как использовать палитру. Объясните, в чем беда?
PM MAIL ICQ   Вверх
ManiaK
Дата 9.6.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



Палитру использовать неправильно невозможно smile
В чём "плохость" выводимой картинки?
Желательно брось весь код загрузки - я его проверю.
Добавлено @ 12:06
Ёлки, на кой создавать отдельный топик??..
Запутал блин smile
PM MAIL WWW   Вверх
Иван4444
Дата 19.8.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 14.8.2008

Репутация: нет
Всего: нет



Здравствуйте. у меня такая проблемка: имееется изображение формата .ico , хотелось бы ее загрузить и отобразить на экране.
 подскажите как это делается?..
 просмотрел предыдущие темы в форуме не помогло ((
PM MAIL   Вверх
Andrey44
Дата 19.8.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Код

HICON hIco = (HICON)LoadImage(.............);

DrawIconEx(...............);



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Dem_max
Дата 19.8.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Fixin, 
Цитата

Есть класс на винапи, чтоб джипеги грузила и гифы тоже. Нужно?

Кинь куда нить пожалуйста, посмотрю.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Andrey44
Дата 20.8.2008, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Цитата(Dem_max @  19.8.2008,  19:08 Найти цитируемый пост)
Fixin, 
Цитата

Есть класс на винапи, чтоб джипеги грузила и гифы тоже. Нужно?

Кинь куда нить пожалуйста, посмотрю. 




Dem_max, это GDI+ 
Код

Gdiplus::Image* img;
img = Gdiplus::Image::FromFile(..................);

Gdiplus::Graphics gr(hdc);
gr.DrawImage(img, 0, 0);



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Dem_max
Дата 20.8.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Andrey44, 
К сожалению у мня на Builder 6.0 GDI+ так и не захотел завестися.
вот топик Builder 6.0 & GDI++


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Andrey44
Дата 21.8.2008, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Dem_max, а ты делаешь при запуске проги такое:
Код

ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartupInput gdiplusStartupInput;

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);


а при выходе такое:
Код

GdiplusShutdown(gdiplusToken);


Если да, тогда не знаю в чем проблема!


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Dem_max
Дата 21.8.2008, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Andrey44, 
Может у тебя проектик под Builder 6.0 имеется ? с GDI+. Скинь я посмотрю, зато я буду точно знать что у когото работает и искать траблы у себя.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Andrey44
Дата 21.8.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Dem_max, нет, только VS. Builder 6.0 - никогда не пользовался.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Annihilator
Дата 21.8.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: нет
Всего: 3



Я так понял, есть файл bmp. Его надо вывести в окошко. Если так, то держи пример, через двойную буферизациюsmile . 
Код

#include <windows.h>
LRESULT CALLBACK DCDemoWndProc(HWND, UINT, UINT, LONG);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevinstance, LPSTR lpCmdLine,int nCmdShow)
{
    HWND hWnd;
    WNDCLASS WndClass;
    MSG Msg;
    char szClassName[] = "DCDemo"; 
    /* Заполняем структуру типа WNDCLASS */
    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)GetStockObject(WHITE_BRUSH);
    WndClass.lpszMenuName = "MyMenu";
    WndClass.lpszClassName = szClassName;
    if ( ! RegisterClass (&WndClass) ) /* Регистрируем создаваемые класс    */
    {
        MessageBox(NULL,"Cannot register class","Error",MB_OK);
        return 0;
    }
    
    hWnd = CreateWindow(szClassName, "Program #1",
                    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 lParam)
{
    HDC hDC, hCompatibleDC;
    PAINTSTRUCT PaintStruct;
    HANDLE hBitmap, hOldBitmap;
    RECT Rect;
    BITMAP Bitmap;
    switch (Message)
    {
        case WM_PAINT:
            hDC = BeginPaint(hWnd,&PaintStruct); // Получаем контекст устройства
            // загружаем bitmap, который будет отображаться в окне, из файла
            hBitmap = LoadImage(NULL,"foto.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
            GetObject(hBitmap,sizeof(BITMAP),&Bitmap); // получаем размер загруженного bitmap`а
            // создаем совместимый с контекстом окна контекст в памяти
            hCompatibleDC = CreateCompatibleDC(hDC);
            // делаем загруженный из файла bitmap текущим в совместимом контексте
            hOldBitmap = SelectObject(hCompatibleDC,hBitmap);
            GetClientRect(hWnd,&Rect); // Определяем размер рабочей области окна
            // Копируем bitmap с совместимого в основной контекст с масштабированием
            StretchBlt(hDC,0,0,Rect.right,Rect.bottom,hCompatibleDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY);
            // вновь делаем старый bitmap текущим
            SelectObject(hCompatibleDC,hOldBitmap);
            DeleteObject(hBitmap); // удаляем загруженный с диска bitmap
            DeleteDC(hCompatibleDC); // Удаляем совместимый контекст
            // Освобождаем основной контекст, завершая перерисовку рабочей области окна
            EndPaint(hWnd,&PaintStruct);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc(hWnd,Message,wParam,lParam);
}


Это сообщение отредактировал(а) Annihilator - 21.8.2008, 15:11


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Dem_max
Дата 21.8.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

DeleteObject(hBitmap); // удаляем загруженный с диска bitmap

Прям страшно становиться за такую функцию
ди и вообще
Цитата

        case WM_PAINT:
            // загружаем bitmap, который будет отображаться в окне, из файла
            hBitmap = LoadImage(NULL,"foto.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
 
Загружать файл в этом сообщении самый наилучший способ.



Это сообщение отредактировал(а) Dem_max - 21.8.2008, 17:42


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Annihilator
Дата 22.8.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: нет
Всего: 3



Цитата(Dem_max @  21.8.2008,  21:42 Найти цитируемый пост)
Прям страшно становиться за такую функцию

Ну не так выразился. Конечно файл-то сам на месте. Удаляем хэндл.

Цитата(Dem_max @  21.8.2008,  21:42 Найти цитируемый пост)
Загружать файл в этом сообщении самый наилучший способ.

Конечно не лучший, совсем не лучший. Это просто учебный пример из книги Румянцева, который я в целях обучения разбирал.


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Dem_max
Дата 22.8.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

Конечно не лучший, совсем не лучший. Это просто учебный пример из книги Румянцева, который я в целях обучения разбирал.

А потом у нас корявые программы программы появляются, потомучто учились на корявых примерах.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.