Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.045 c
3-16134
Karlson
2004-01-15 14:23
2004.02.06
значения Null


14-16613
Eagle Owl
2004-01-13 22:43
2004.02.06
Дизассемблеры...


1-16439
Blade
2004-01-28 12:31
2004.02.06
Потоки


3-16055
Trok
2004-01-12 14:19
2004.02.06
Как в FB сделать ключевое составное вычисляемое поле ?


1-16373
Ser_ega
2004-01-23 23:18
2004.02.06
Label





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