Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

Загрузка и отображение картинки   Найти похожие ветки 

 
Варяг ©   (2006-05-30 21:20) [0]

как правильно загрузить картинку из ВМР файла или ресурса?
привожу свой код моэет кто знает в чем неправильный подход..


function CreateImg:LongInt;
begin

Result:=CreateWindow(
   "STATIC",
   nil,
   WS_VISIBLE or WS_CHILD or WS_BORDER or SS_BITMAP
   ,  // styles

   250, // x
   100, // y
   100,//Width,
   100,//Height
   MyWnd,
   Id_Btn1,
   (HINSTANCE) ,
   nil);

If Result=0 then
MessageBox(0,"Error of controls","",0);
Img:=result;
end;

....

img:= LoadBitMap(hInstance,"BITMAP")"Error",nil,0); -для ресурса
...
Img:=LoadImage(hInstance,PChar("c:\pic1.bmp"),IMAGE_BITMAP,
150,150,LR_DEFAULTSIZE ); -для ВМР

подозреваю что неверно выбран объект для отображени..



 
Delphi_is_cool ©   (2006-05-31 20:21) [1]


> Варяг ©   (30.05.06 21:20)
> как правильно загрузить картинку из ВМР файла или ресурса?

По поводу ресурсов, если тип ресурса BITMAP, то стандартными ф-циями(LoadBitmap, LoadImage), а если ты загнал bmp в ресурс в виде RCDATA, то смотри здесь: http://delphimaster.net/view/4-1148709908/

Что касается загрузки из файла ... помоему придётся грузить вручную:

type
 PBitmap_Info = ^TBitmap_Info;
 TBitmap_Info = record
   Width: LongInt;
   Height: LongInt;
 end;

function LoadBitmapFromFile(const FileName: String; lpBitmap_Info: PBitmap_Info) : HBITMAP;
var
 pMem: Pointer;
 DC, MemDC: HDC;
 dwFileSize: LongWord;
 BitmapInfo: TBitmapInfo;
 hFile, hBmp: LongWord;
begin
 Result := 0;
 hFile := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if hFile <> INVALID_HANDLE_VALUE then
 begin
   dwFileSize := GetFileSize(hFile, nil) - SizeOf(TBitmapFileHeader);
   SetFilePointer(hFile, SizeOf(TBitmapFileHeader), nil, 0);

   pMem := Pointer(LocalAlloc(LPTR, dwFileSize));
   if pMem <> nil then
   begin
     if ReadFile(hFile, pMem^, dwFileSize, dwFileSize, nil) then
     begin
       DC := GetDC(0);
       if DC <> 0 then
       begin
         MemDC := CreateCompatibleDC(DC);
         if MemDC <> 0 then
         begin
           ZeroMemory(@BitmapInfo, SizeOf(TBitmapInfo));
           CopyMemory(@BitmapInfo.bmiHeader, pMem, SizeOf(TBitmapInfoHeader));

           if lpBitmap_Info <> nil then
             with lpBitmap_Info^, BitmapInfo.bmiHeader do
             begin
               Width := biWidth;
               Height := biHeight;
             end;

           hBmp := SelectObject(MemDC, CreateCompatibleBitmap(DC, 1, 1));
           Result := CreateDIBitmap(MemDC, BitmapInfo.bmiHeader, CBM_INIT, Pointer(LongWord(pMem) + SizeOf(TBitmapInfoHeader)), BitmapInfo, DIB_RGB_COLORS);

           DeleteObject(SelectObject(MemDC, hBmp));
           DeleteDC(MemDC);
         end;
         ReleaseDC(0, DC);
       end;
     end;
     LocalFree(LongWord(pMem));
   end;
 end;
 CloseHandle(hFile);
end;

// Пример использования:

function CreateImage(const ParentHWnd: HWND; const X, Y, Width, Height: LongInt) : HWND;
begin
 Result := CreateWindow("Static", nil, WS_CHILD or WS_VISIBLE or WS_BORDER or SS_BITMAP or SS_CENTERIMAGE, X, Y, Width, Height, ParentHWnd, 0, hInstance, nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 hBmp: HBITMAP;
 hImage: HWND;
 Bitmap_Info: TBitmap_Info;
begin
 hBmp := LoadBitmapFromFile("C:\1.bmp", @Bitmap_Info);
 hImage := CreateImage(Handle, 50, 50, Bitmap_Info.Width, Bitmap_Info.Height);
 SendMessage(hImage, STM_SETIMAGE, IMAGE_BITMAP, hBmp);
end;


 
Варяг ©   (2006-06-01 23:05) [2]

спасибо за ответ Delphi_is_cool
а то я уже надежду начал терять...



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

Форум: "WinAPI";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.114 c
2-1159264876
vegarulez
2006-09-26 14:01
2006.10.15
Вопрос про мышь и 2 монитора (раб. стола).


3-1155246216
Oxot_nik
2006-08-11 01:43
2006.10.15
Как создать дерево таблиц в Базе данных?


15-1158863422
гость23
2006-09-21 22:30
2006.10.15
Реал-тайм звук с микрофона в динамиках ноутбука


8-1142791800
foull
2006-03-19 21:10
2006.10.15
работа с mp3 тэгами


15-1159255048
Экспериментатор
2006-09-26 11:17
2006.10.15
Перемешались знаки препинания, звездочки кавычки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский