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

Вниз

Ресурсы(RCDATA->BITMAP ?)   Найти похожие ветки 

 
Delphi_is_cool ©   (2006-05-27 10:05) [0]

Здравствуйте ! Есть ресурсы, которые пинадлежат к типу RCDATA, извечь эти ресурсы я могу(FindResource, LoadResource), но вот как преобразовать извлечённый ресурс в BITMAP ? Т.е в итоге мне нужно получить HANDLE(HBITMAP), для дальнейшей отрисовки ... Заранее благодарен.


 
MBo ©   (2006-05-27 14:24) [1]

LoadBitmap
LoadImage


 
Delphi_is_cool ©   (2006-05-28 14:34) [2]


> MBo ©   (27.05.06 14:24) [1]
>
> LoadBitmap
> LoadImage

Пробовал, не получилось ... GetLastError говорит: "Указанный тип ресурса в файле образа отсутствует".


 
Delphi_is_cool ©   (2006-05-29 07:12) [3]

Немного порылся в модуле Graphics, и проблему решил :) Вот код, может кому пригодится:

function MyLoadBitmap(const ResourceName: String) : HBITMAP;
var
 pRes: Pointer;
 DC, MemDC: HDC;
 BitmapInfo: TBitmapInfo;
 hResData, hResInfo, hBmp: THandle;
begin
 Result := 0;
 hResInfo := FindResource(hInstance, PChar(ResourceName), RT_RCDATA);
 if hResInfo <> 0 then
 begin
   hResData := LoadResource(hInstance, hResInfo);
   if hResData <> 0 then
   begin
     pRes := LockResource(hResData);
     if pRes <> nil then
     begin
       DC := GetDC(0);
       if DC <> 0 then
       begin
         MemDC := CreateCompatibleDC(DC);
         if MemDC <> 0 then
         begin
           ZeroMemory(@BitmapInfo, SizeOf(TBitmapInfo));
           Inc(LongWord(pRes), SizeOf(TBitmapFileHeader));
           CopyMemory(@BitmapInfo.bmiHeader, pRes, SizeOf(TBitmapInfoHeader));
           Inc(LongWord(pRes), SizeOf(TBitmapInfoHeader));

           hBmp := SelectObject(MemDC, CreateCompatibleBitmap(DC, 1, 1));
           Result := CreateDIBitmap(MemDC, BitmapInfo.bmiHeader, CBM_INIT, pRes, BitmapInfo, DIB_RGB_COLORS);

           DeleteObject(SelectObject(MemDC, hBmp));
           DeleteDC(MemDC);
         end;
         ReleaseDC(0, DC);
       end;
       UnlockResource(hResData);
     end;
   end;
   FreeResource(hResData);
 end;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.053 c
2-1158829400
fifi01
2006-09-21 13:03
2006.10.08
TStringList


15-1158157573
oldman
2006-09-13 18:26
2006.10.08
Надо купить комп. Все новые камни уже 64.


15-1158251137
Чародей
2006-09-14 20:25
2006.10.08
OpenGL® SuperBible, Third Edition


8-1142541887
Slava_NV
2006-03-16 23:44
2006.10.08
Люди помогите с литературой.


2-1158991317
Steep
2006-09-23 10:01
2006.10.08
iso файлы