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

Вниз

Быстрее ScanLine   Найти похожие ветки 

 
Yaro   (2002-04-04 17:53) [0]

Возможно ли организовать сабж?


 
MBo   (2002-04-04 18:01) [1]

GetDiBits


 
Sergey_n   (2002-04-05 01:26) [2]

или GetBitmapBits or SetBitmapBits


 
Yaro   (2002-04-05 01:59) [3]

И на сколько это быстро? (FPS при 1024х768)


 
MBo   (2002-04-05 06:43) [4]

FPS-ы не считал.
На DelphiGFX FastDib или что-то подобное смотрел?
Вообще какая задача?
Для манипуляций с картинками быстрее Intel Image Processing Library нет- но там внутренний формат.


 
Yaro   (2002-04-05 15:35) [5]

FastDIB не так быстр, как хотелось бы. Задача проста - есть RGB-массив, который строит моя прога. Надо сделать Draw. Только быстро. Другими словами хочу софтварную игрушку написать (без использования DirectX or OpenGL; а если и с ними, то только для вывода массива).

Что подскажете?


 
MBo   (2002-04-05 15:54) [6]

не знаю.
Если захочешь попробовать GetDiBits/SetDibits,
вот демонстрация, как с ними работать.
procedure TForm1.Button2Click(Sender: TObject);
var b:tbitmap;
a:array[0..9,0..9] of TRGBQuad;
s:string;
info:tbitmapinfo;
i,j:integer;
begin
b:=tbitmap.create;
b.PixelFormat:=pf24bit;
b.width:=10;
b.height:=10;
b.Canvas.moveTo(0,0);
b.Canvas.LineTo(6,6);
with info.bmiHeader do begin
biWidth:=b.Width;
biHeight:=b.Height;
biSize:=SizeOf(TBITMAPINFOHEADER);
biCompression:=BI_RGB;
biBitCount:=32;
biPlanes:=1;
biSizeImage:=((biWidth*biBitCount+31)div 32)*biHeight*4;
end;
GetDIBits(b.canvas.handle, B.Handle, 0,B.Height,@a,Info,DIB_RGB_COLORS);
for i:=0 to 9 do begin
s:="";
for j:=0 to 9 do s:=s+inttohex(a[i,j].rgbRed,2)+" ";
memo1.lines.add(s);
end;
image1.picture.assign(b);
b.free;
end;


 
Sergey_n   (2002-04-06 01:24) [7]

SetBitmapBits на 800х600 ~20мс.


 
Yaro   (2002-04-06 02:15) [8]

Жайте пример использования SetBitmapBits, а то вот это не работает:


procedure TForm1.Button1Click(Sender: TObject);
var a: array[0..9, 0..9] of TRGBQuad;
i, j:integer;
begin

for i:=0 to 9 do
for j:=0 to 9 do a[i,j].rgbRed := 100;

SetBitMapBits(image1.Picture.Bitmap.Handle, SizeOf(a), @a);
end;


 
MBo   (2002-04-06 07:11) [9]

вот, но setbitmapbits устарела, лучше использовать SetDiBits

14) Как создать палитру в градациях серого

procedure TForm1.Button1Click(Sender: TObject);
var a:array[0..255,0..255] of byte;
ct:array[0..255] of TRGBQuad;
b:tbitmap;
i,j:integer;
begin
b:=tbitmap.create;
b.pixelformat:=pf8bit;
b.Width := 256;
b.Height := 256;
for i:=0 to 255 do begin
ct[i].rgbRed:=i;
ct[i].rgbBlue:=i;
ct[i].rgbGreen:=i;
ct[i].rgbReserved:=0;
end;
for i:=0 to 255 do for j:=0 to 255 do a[i,j]:=trunc(sqrt(i*j));
SetDIBColorTable(b.canvas.Handle,0,$100,ct);
SetBitmapBits(b.Handle, sizeof(a),@a);
Image1.picture.assign(b);
b.free;
end;



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

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

Наверх





Память: 0.57 MB
Время: 0.025 c
4-35501
dim-
2002-06-03 17:48
2002.08.12
Запуск ScreenSavera


14-35418
esprit_bel
2002-06-06 11:27
2002.08.12
Исходник


1-35253
^SANYA
2002-07-30 15:43
2002.08.12
Перехват клавиш, нажатых в Win32


3-35199
BM
2002-07-23 13:22
2002.08.12
Как создать БД


1-35231
GTA 3
2002-07-28 19:51
2002.08.12
Чтение из Memo И запись в реестр





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