Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как разместить 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо