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

Вниз

Как разместить Bitmap на форме API шными функциями?   Найти похожие ветки 

 
BillyJeans ©   (2004-03-15 11:51) [0]

Как разместить Bitmap на форме API"шными функциями?


 
MBo ©   (2004-03-15 12:03) [1]

Выбрать битмап во временном контексте и bitblt


 
BillyJeans ©   (2004-03-15 12:32) [2]

HDC hdcSrc; //handle to source device context

Может ли hdcSrc быть TFileStream?


 
MBo ©   (2004-03-15 13:10) [3]

Нет.
В свете второго вопроса стало интересно - что имеется в виду под Bitmap?


 
BillyJeans ©   (2004-03-15 13:16) [4]

в идеале BMP"ха засунутая в ресурс...


 
Diamond Cat ©   (2004-03-15 13:41) [5]

ну если просто залить окно при создании неким рисунком то
var
WndClassEx: TWndClassEx;
........................
WndClassEx.hbrBackground := HBRUSH(CreatePatternBrush(LoadBitmap(HInstance,"bitmap")));
.............
createwindowex(...,WndClassEx.....


 
Diamond Cat ©   (2004-03-15 13:42) [6]

ну если просто залить окно при создании неким рисунком то
var
WndClassEx: TWndClassEx;
........................
WndClassEx.hbrBackground := HBRUSH(CreatePatternBrush(LoadBitmap(HInstance,"bitmap")));
.............
createwindowex(...,WndClassEx.....


 
Diamond Cat ©   (2004-03-15 13:42) [7]

ну если просто залить окно при создании неким рисунком то
var
WndClassEx: TWndClassEx;
........................
WndClassEx.hbrBackground := HBRUSH(CreatePatternBrush(LoadBitmap(HInstance,"bitmap")));
.............
createwindowex(...,WndClassEx.....


 
BillyJeans ©   (2004-03-15 14:56) [8]

а если не просто залить, на RunTime картинку на форму бросить...

hdcSrc := LoadBitmap(hInstance, "BMP");
bitblt(MainWnd, xPos, yPos, Width, height, hdcSrc, 1, 1, SRCCOPY);


что-то не хочет работать :(


 
Nick Denry ©   (2004-03-15 15:11) [9]

Используй Drag-n-drop + LoadImage, Form1.canvas.handle и bitblt. Давай мыло -пришлю пример загрузки битмапа с диска. Драг-н-дроп найдешь где нить еще. Там не сложно...


 
BillyJeans ©   (2004-03-15 15:23) [10]

2 Nick Denry ©

а пример без VCL слабо?


 
Nick Denry ©   (2004-03-15 15:47) [11]

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:54) [12]

Спасибо!
но я сделал вот так:

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 16:03) [13]

Если в "рантайме на форму бросить" - то драг-н-дроп, а если просто разместить - то ты делал верно - через ресурс....


 
YuRock ©   (2004-03-15 18:19) [14]

> BillyJeans ©   (15.03.04 15:54) [12]

С таким кодом прога (да и вся система) долго не протянет - Вы контекст получаете 3 раза, а очищаете всего 1...


 
BillyJeans ©   (2004-03-16 09:52) [15]

Виноват, исправляюсь... ;)

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);



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

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

Наверх




Память: 0.5 MB
Время: 0.03 c
1-1080196979
X9
2004-03-25 09:42
2004.04.11
Ошибка при вызове функции из DLL.


4-1078988334
Shiza
2004-03-11 09:58
2004.04.11
Помогите перевести кусок С-шного кода.


6-1075699593
СергейМ
2004-02-02 08:26
2004.04.11
Определить сетевое имя пользователя


8-1076518876
Larry
2004-02-11 20:01
2004.04.11
Заливка многогранника


1-1082963644
Hint
2004-04-26 11:14
2004.04.11
TComboBox & TStringGrid