На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU
  
> загрузка bitmap из файла
    Хочу нарисовать Bitmap на экране.
    Пишу: LoadImage(NULL, (LPCTSTR )"b.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    Проблема в том, что на десктопе флан LR_LOADFROMFILE, а для PocketPC нельзя, то есть можно bitmap грузить только из ресурсов.
    Как прочитать bitmap из файловой системы?
      а ты на чем пишешь?
        EVC++ 4.0
        SDK - самое последнее
          SHLoadDIBitmap()
            Спасибо.
            Только не ясно, зачем у одной ф-ции убавили функциональности, чтобы сделать другую ф-цию...
              Мне тоже было интересно, но msdn об этом умалчивает ;)
                А как потом на экран bitmap вывести. Следующий фрагмент дает кривой-косой рисунок:
                ExpandedWrap disabled
                   
                      CPaintDC dc(this); // device context for painting
                      
                          {
                            CBitmap bmp;
                      HANDLE hBitmap = SHLoadDIBitmap(name);
                      BITMAP Bitmap;
                      GetObject(hBitmap, sizeof(BITMAP), &Bitmap);
                        bmp.CreateBitmapIndirect(&Bitmap);          
                              CDC mdc;
                        mdc.CreateCompatibleDC(&dc);
                        mdc.SelectObject(&bmp);
                              
                        dc.BitBlt(0, 0, Bitmap.bmWidth, Bitmap.bmHeight, &mdc, 0, 0, SRCCOPY);
                          }

                В методах CBitmap ф-ции аналогичной SHLoadDIBitmap я не нашел, а насколько я понимаю, применять в MFC проге winapi paint нельзя

                Добавлено
                Правда если применять winapi, то все рисуется, но только один раз - в смысле нельзя потом еще один bitmap дорисовать.
                  Цитата peter788, 18.10.04, 22:26
                  ...в смысле нельзя потом еще один bitmap дорисовать.

                  В смысле, поподробнее объясни что и куда дорисовывать нужно? :blink:
                  ЗЫ. Я даже в МФЦшных проектах рисую апишными функциями...
                    Я делал так: в методе OnPaint CDialog'а писал ::beginpaint(...)
                    , потом стандартный код рисования bitmap, потом ::endpaint().
                    При этом bitmap нормально рисовался, но потом почему-то при перерисовке того же самого диалога с другим bitmap'ом он почему-то не рисуется (вроде там еще наблюдался эффект, который я позже опишу, точно не помню).
                    Потом я поставил два biginpaint'а подряд. После этого bitmap'ы стали номально рисоваться, только возникли глюки иного рода - при свертывании выпадающего из комбобокса списка он не стирался с экрана.
                    К идее, что виноваты вызовы winapi-функций я так пришел. Насколько я понимаю, mfc сама как-то вызывает beginpaint при входе в OnPaint. Пытался использовать hdc, спятанный в глубинх CPaintDC - тоже ничего не вышло - делал я это так:
                    CPaintDC dc(this); // device context for painting

                    // TODO: Add your message handler code here

                    HDC hDC, hCompatibleDC;
                    PAINTSTRUCT PaintStruct;
                    HANDLE hBitmap, hOldBitmap;
                    RECT Rect;

                    BITMAP Bitmap;

                    //hDC = ::BeginPaint(m_hWnd, &PaintStruct);
                    //hDC = ::BeginPaint(m_hWnd, &PaintStruct);
                    hDC = dc.m_ps.hdc;
                    hBitmap = SHLoadDIBitmap(sBuf);
                    GetObject(hBitmap, sizeof(BITMAP), &Bitmap);
                    hCompatibleDC = CreateCompatibleDC(hDC);
                    hOldBitmap = SelectObject(hCompatibleDC, hBitmap);
                    ::GetClientRect(m_hWnd, &Rect);
                    StretchBlt(hDC, 0, 0, Rect.right, Rect.bottom, hCompatibleDC, 0, 0,
                    Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);
                    SelectObject(hCompatibleDC, hOldBitmap);
                    DeleteObject(hBitmap);
                    DeleteDC(hCompatibleDC);
                    //::EndPaint(m_hWnd, &PaintStruct);
                    - битмап не перерисовываетя
                      подскажите литературу по загрузке bmp файлов где можно найти??? Срочно надо!!!! ;) 1
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0487 ]   [ 14 queries used ]   [ Generated: 18.07.25, 00:32 GMT ]