Главная страница
    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.46 MB
Время: 0.007 c
3-35228
VictorT
2002-07-24 14:49
2002.08.12
Как в sql получить строки, в которых дублируются...


3-35172
voyager_s
2002-07-22 00:56
2002.08.12
Печать таблицы в QReport


14-35417
Елена
2002-07-15 07:32
2002.08.12
Digitman, с Днем Варенья!!!


3-35131
Ag2002
2002-07-19 10:21
2002.08.12
DbComboBox


3-35153
RDA
2002-07-18 11:15
2002.08.12
Деревья





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