Форум: "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