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

Вниз

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

 
Варяг ©   (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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.044 c
4-1149051439
Mamed
2006-05-31 08:57
2006.10.15
get Default mail Program


2-1159173443
laronov
2006-09-25 12:37
2006.10.15
послать Ctrl+S в другое приложение


1-1155469218
nali
2006-08-13 15:40
2006.10.15
Вопрос по отладчику delphi6


2-1159276169
Asdpro
2006-09-26 17:09
2006.10.15
Создание меню из дерева каталогов и файлов


2-1159342059
AdminSKBZ
2006-09-27 11:27
2006.10.15
MDI - сохранение и востановления





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