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

Вниз

Динамическое создание картинки в памяти   Найти похожие ветки 

 
chi   (2003-11-25 13:47) [0]

и сохранение его в файл.. или не пойму как все это работает :((
Уважаемые мастера, если можно пример. Спасибо.


 
MBo ©   (2003-11-25 14:04) [1]

Расшифруй вопрос - что имеешь в виду под картинкой


 
Maxud ©   (2003-11-25 14:07) [2]

Что-то типа этого, наверное:
uses Graphics;
...
var b:tbitmap;
begin
b := TBitmap.Create;
try
b.Width := 35;
b.Height:=35;
b.Canvas.Bruch.Color := clRed;
b.Canvas.FillRect(Rect(5,5,30,30));
b.SaveToFile("sdfsdf.bmp");
finally
b.Free;
end;
end;


 
chi   (2003-11-25 14:34) [3]


> MBo © (25.11.03 14:04) [1]
> Расшифруй вопрос - что имеешь в виду под картинкой


под картинкой имею в виду битмап, вобщем, надо скопировать часть экрана в память и сохранить его в файл(желательно все без VCL). И я совсем запутался с HDC, HBitmap, указателями и прочими..
Вот мой код с TIMAGE:

hdcScreen := GetDC(0);
hdcCompatible := CreateCompatibleDC(hdcScreen);
//
//Create a compatible bitmap for hdcScreen.
//
hbmScreen:= CreateCompatibleBitmap(hdcScreen,
GetDeviceCaps(hdcScreen, HORZRES),

GetDeviceCaps(hdcScreen, VERTRES));

// Select the bitmaps into the compatible DC. */

if SelectObject(hdcCompatible, hbmScreen)<>0 then
showmessage("Compatible Bitmap Selection");

//
// Copy color data for the entire display into a
//bitmap that is selected into a compatible DC.
if not BitBlt(hdcCompatible,
0,0,
200, 300,
hdcScreen,
0,0,
SRCCOPY) then

showmessage("Screen to Compat Blt Failed");
ShowWindow(handle, SW_SHOW);
image1.Canvas.Handle:=hdcCompatible;

и вот где там именно указатель на битмап и что здесь HDC как его передавать в GetDibits, каким образом заполняется структура BitmapInfo , зачем вводится PBitmapInfo понять не могу совсем, или я напрочь запутался


 
chi   (2003-11-27 02:07) [4]

неужели ни кто не знает или игнор ??


 
Mihey ©   (2003-11-27 16:45) [5]

2 Chi:

> под картинкой имею в виду битмап, вобщем, надо скопировать часть экрана в память и сохранить его в файл(желательно все без VCL). И я совсем запутался с HDC, HBitmap, указателями и прочими..

Заводим переменную TBitmap:

var Bmp: TBitmap;

Создадим объект, зададим размеры:

Bmp := TBitmap.Create;
Bmp.Width := 300;
Bmp.Height := 200;

Всё, картинка у тебя создана. Сейчас нарисуем в неё экран. Это делается при помощи BitBlt, как ты и знаешь:

var ScreenDC: HDC;

...

ScreenDC := GetDC(0);
try
BitBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width,
Bmp.Height, ScreenDC, 0, 0, SRCCOPY );
finally
ReleaseDC(0, ScreenDC);
end;

...

Всё, теперь сохраним файл на диск:
Bmp.SaveToFile("screenshot.bmp");

И удалим объект:
Bmp.Free;

Это решение требует только модуля Graphics, т.е. не использует VCL.


 
chi   (2003-11-28 20:25) [6]

большое спасибо!


 
hooker   (2003-11-29 20:24) [7]

если можно, то скинте ссылочку, где можно было бы почитать о подобных проблемах(желательно русскую)


 
марсианин   (2003-11-30 03:22) [8]

как вариант изучай исходники


 
chi   (2003-11-30 15:28) [9]


> марсианин (30.11.03 03:22) [8]

запутался в этих исходниках , блин. Не понимаю проблему в корне, т.е. hdc, hBitmap, getdibits и т.д.


 
MADE_IN_USSR   (2003-12-01 12:14) [10]

Удалено модератором



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
1-16261
kostya
2004-01-26 11:54
2004.02.06
как добавить progressbar в stringgrid


1-16243
AngelOid
2004-01-26 16:25
2004.02.06
Создание новых компонентов


14-16664
K.o.Z
2004-01-12 03:20
2004.02.06
Странно


8-16533
killsniper
2003-09-29 13:39
2004.02.06
Проблемы с установкой GLScene


1-16383
Бывающий
2004-01-23 16:39
2004.02.06
TOleContainer. Мышь ведет себя странно. Не select-ит Помогите ПЛЗ