Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

HBitmap на форму   Найти похожие ветки 

 
Alfa   (2005-04-15 13:55) [0]

Сдравствуйте мастера. У меня тут маленькая проблемка.
Я получил HBitmap методом CreateDIBitmap(), и мне как-то надо вывести его на форму.
Подозреваю, что это надо делать с помощью BitBlt(), но как я не пробовал у меня максимум, что получалось, это вывести чёрный квадрат на экран(хотя картинка была цветная).
Помогите пожалуста.


 
DVM ©   (2005-04-15 13:58) [1]

void DrawBitmap(
   HDC     dc,        // контекст-приемник
   HBITMAP bmp,       // картинка-исходник
   int     x_src,     // верхний левый угол исходника
   int     y_src,     //
   int     x_dst,     // верхний левый угол приемника
   int     y_dst,     //
   int     dx,        // размеры
   int     dy )       //
{
   // создаем в памяти контекст устройства,
   // совместимый с контекстом-приемником
   HDC hdcMem = CreateCompatibleDC( dc );

   // связываем исходный bitmap с временным контекстом
   SelectObject( hdcMem, bmp );

   // копируем с одного контекста в другой
   // по заданным параметрам
   BitBlt(
       dc,
       x_dst,
       y_dst,
       dx,
       dy,
       hdcMem,
       x_src,
       y_src,
       SRCCOPY
   );

   // удаляем вспомогательный контекст
   DeleteDC( hdcMem );
}


 
Alfa   (2005-04-15 14:02) [2]

Спасибо большое DVM.:)


 
Alfa   (2005-04-20 13:27) [3]

У меня что-то не выходит:(
Вроде всё делаю как надо:

Window:HwnD;
Bitmap:HBitmap;
hFile:HDC;            //dc файла
BFH:BITMAPFILEHEADER;
BIH:BITMAPINFOHEADER;
BI:BITMAPINFO;
ReadCount:DWORD;
SiZeInfo:LongInt;
p:Pointer;
HDBitmap:HDC;//DC совместимый с окном.
HDForm:HDC;//dc окна.

В коде:
     HDForm:=GetDc(window);

     hFile := CreateFile( FileName, GENERIC_READ, FILE_SHARE_READ, nil,
                    OPEN_EXISTING, 0, 0 );
     ReadFile(hFile,BFH,SizeOf(BITMAPFILEHEADER),ReadCount,nil);
     ReadFile(hFile,BIH,SizeOf(BITMAPINFOHEADER),ReadCount,nil);
     BI.bmiHeader:=BIH;
     p:=pbyte(GlobalAllocPtr( GMEM_MOVEABLE, SizeInfo ));
     ReadFile(HFile,p,BIH.biSizeImage,ReadCount,nil);
     Bitmap:=CreateDIBitmap(HDForm,BIH,CBM_INIT, p,BI,DIB_RGB_COLORS);
     CloseHandle(HFile);//Прочитали файл.
                        //Отрисовка
          HDBitmap:=CreateCompatibleDC(HDForm);
          SelectObject(HDBitmap,Bitmap);
          BitBlt(HDForm,100,100,50,50,HDBitmap,0,0,SRCCopy);
Он выдаёт мне Чёрный квадрат.
Может это ошибка в чтении файла.


 
DVM ©   (2005-04-21 10:27) [4]

hBitmap:=LoadImage(hInstance, PChar(Path_to_bitmap), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE or LR_DEFAULTSIZE);

//-----------

procedure DrawBitmap(dc: HDC; hBitmap: HBITMAP; xStart, yStart: integer);
var
 bm: BITMAP;
 hdcMem: HDC;
 ptSize, ptOrg: TPoint;
begin
 if dc <> 0 then
   begin
     hdcMem := CreateCompatibleDC(dc);
     if (hdcMem <> 0) and (hBitmap <> 0) then
       begin
         SelectObject(hdcMem, hBitmap);
         SetMapMode(hdcMem, GetMapMode(dc));
         GetObject(hBitmap, sizeof(BITMAP), @bm);
         ptSize.x := bm.bmWidth;
         ptSize.y := bm.bmHeight;
         DPtoLP(dc, ptSize, 1);
         ptOrg.x := 0;
         ptOrg.y := 0;
         DPtoLP(hdcMem, ptOrg, 1);
         BitBlt(dc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, ptOrg.x, ptOrg.y, SRCCOPY);
         DeleteDC(hdcMem);
       end;
   end;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.04 c
1-1117235832
Dark123us
2005-05-28 03:17
2005.06.14
ошибка при попытке выгрузки Dll


3-1115714964
KilkennyCat
2005-05-10 12:49
2005.06.14
Данные длиною в три байта.


11-1099575927
-=AlexR=-
2004-11-04 16:45
2005.06.14
Плавная прокрутка в RichEdit


14-1117004684
Arkady
2005-05-25 11:04
2005.06.14
Как зарегистрироваться на www.borland.com?


1-1117423021
FANAT
2005-05-30 07:17
2005.06.14
Количество строк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский