![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как разместить Bitmap на форме API'шными функциями? [D5, Win2k]
BillyJeans © (2004-03-15 11:51:00)Как разместить Bitmap на форме API'шными функциями?
BillyJeans (2004-03-16 09:52:00) [1]Виноват, исправляюсь... ;)
hdcDst := GetDC(MainWnd);
hdcSrc := CreateCompatibleDC(hdcDst);
b := LoadBitmap(hInstance, 'BMP');
SelectObject(hdcSrc, b);
bitblt(hdcDst, xPos, yPos, width, height, hdcSrc, 0, 0, SRCCOPY);
DeleteDC(hdcSrc);
ReleaseDC(MainWnd, hdcDst);
YuRock (2004-03-15 18:19:00) [2]> BillyJeans © (15.03.04 15:54) [12]
С таким кодом прога (да и вся система) долго не протянет - Вы контекст получаете 3 раза, а очищаете всего 1...
Nick Denry (2004-03-15 16:03:00) [3]Если в "рантайме на форму бросить" - то драг-н-дроп, а если просто разместить - то ты делал верно - через ресурс....
BillyJeans (2004-03-15 15:54:00) [4]Спасибо!
но я сделал вот так:
var
hdcSrc: HWND;
b: HBITMAP;
begin
b := LoadBitmap(hInstance, 'BMP');
hdcSrc := CreateCompatibleDC(GetDC(MainWnd));
SelectObject(hdcSrc, b);
bitblt(GetDC(MainWnd), xPos, yPos, width, height, hdcSrc, 0, 0, SRCCOPY);
DeleteDC(hdcSrc);
end;
Nick Denry (2004-03-15 15:47:00) [5]BillyJeans. Не надо брать на слабо. тот участок кода который тебя интерсует-полностью на АПИ.
Если надо - то лови, а переписывать прогу полностью - это черезчур. вы сударь зарываеетесь..
procedure TForm1.Button1Click(Sender: TObject);
var
BMFile : HFILE;
Str : OFSTRUCT;
FS : DWORD;
Bmp : HBITMAP;
DelphiMap : TBitmap;
sz : TSize;
begin
//BMFile := windows.OpenFile('TEXTURE.bmp',str,OF_READ);
//FS := Windows.GetFileSize(BMFile,nil);
//Form1.Caption := IntToStr(FS);
BMP:=LoadImage(0,'TEXTURE.bmp',IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_DEFAULTSIZE);
//Windows.CloseHandle(BMFile);
Delphimap := TBitmap.Create;
DelphiMap.Handle := BMP;
SetBitmapDimensionEx(BMP,256,256,@SZ);
GetBitmapDimensionEx(BMP,sz);
Form1.Caption := IntToStr(sz.cx);
Image1.Canvas.Draw(0,0,DelphiMap);
DeleteObject(BMP);
DelphiMap.Free;
end;
BillyJeans (2004-03-15 15:23:00) [6]2 Nick Denry ©
а пример без VCL слабо?
Nick Denry (2004-03-15 15:11:00) [7]Используй Drag-n-drop + LoadImage, Form1.canvas.handle и bitblt. Давай мыло -пришлю пример загрузки битмапа с диска. Драг-н-дроп найдешь где нить еще. Там не сложно...
BillyJeans (2004-03-15 14:56:00) [8]а если не просто залить, на RunTime картинку на форму бросить...
hdcSrc := LoadBitmap(hInstance, 'BMP');
bitblt(MainWnd, xPos, yPos, Width, height, hdcSrc, 1, 1, SRCCOPY);
что-то не хочет работать :(
Diamond Cat (2004-03-15 13:42:00) [9]ну если просто залить окно при создании неким рисунком то
var
WndClassEx: TWndClassEx;
........................
WndClassEx.hbrBackground := HBRUSH(CreatePatternBrush(LoadBitmap(HInstance,'bitmap')));
.............
createwindowex(...,WndClassEx.....
Diamond Cat (2004-03-15 13:42:00) [10]ну если просто залить окно при создании неким рисунком то
var
WndClassEx: TWndClassEx;
........................
WndClassEx.hbrBackground := HBRUSH(CreatePatternBrush(LoadBitmap(HInstance,'bitmap')));
.............
createwindowex(...,WndClassEx.....
Diamond Cat (2004-03-15 13:41:00) [11]ну если просто залить окно при создании неким рисунком то
var
WndClassEx: TWndClassEx;
........................
WndClassEx.hbrBackground := HBRUSH(CreatePatternBrush(LoadBitmap(HInstance,'bitmap')));
.............
createwindowex(...,WndClassEx.....
BillyJeans (2004-03-15 13:16:00) [12]в идеале BMP'ха засунутая в ресурс...
MBo (2004-03-15 13:10:00) [13]Нет.
В свете второго вопроса стало интересно - что имеется в виду под Bitmap?
BillyJeans (2004-03-15 12:32:00) [14]HDC hdcSrc; //handle to source device context
Может ли hdcSrc быть TFileStream?
MBo (2004-03-15 12:03:00) [15]Выбрать битмап во временном контексте и bitblt