Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизМожно ли как-нибудь ускорить работу с Canvas.Pixels Найти похожие ветки
← →
JC (2002-05-04 12:04) [0]Мне надо обрабатывать Большую картинку (1024х768) переставляя в ней пиксели, но при стандартных функциях это занимает от 30 сек до 1,5 минуты, видел подобную программу под DOS, скорость мгновенная. Заранее благодарен.
← →
Song (2002-05-04 12:44) [1]Эта програма была сделана на асме.
← →
JC (2002-05-04 12:49) [2]Помоему на "C"...
← →
MBo (2002-05-04 14:08) [3]при работе через Scanline скорость повысится на 1-2 порядка.
При использовани GetDiBits, если это подходит, можно еще быстрее.
Посмотри также сайт delphigfx.mastak.ru.
← →
SPeller (2002-05-04 14:13) [4]Используй WinAPI и всё будет "летать".
← →
JC (2002-05-07 20:43) [5]SPeller А можно хотя-бы одну процедуру(функцию) для поиска.
← →
Nikolay (2002-05-07 21:03) [6]scanline
← →
JC (2002-05-07 23:45) [7]Да, может что-то со мной, но по-моему GetDiBits копирует построчно, а надо попиксельно. Если я ошибаюсь, кто-нибудь приведите пример аналога
Canvas.Pixels[x+z,y]:=Canvas.Pixels[x,y]
← →
MBo (2002-05-08 07:08) [8]C помощью GetDiBits получаем двумерный массив, причем с инверсией - левй угол картинки в конце массива, делаем манипуляции, потом SetDiBits
← →
JC (2002-05-08 19:52) [9]А хоть чуть-чуть исходника, если можно.
← →
JC (2002-05-09 16:04) [10]MBo можешь хоть короткий пример привести?
← →
MBo (2002-05-09 21:24) [11]procedure TForm1.Button1Click(Sender: TObject);
var b:tbitmap;
a:array[0..9,0..9] of TRGBQuad;
bi:tbitmapinfo;
i,j:integer;
s:string;
begin
b:=tbitmap.create;
b.PixelFormat:=pf24bit;
b.width:=10;
b.height:=10;
b.canvas.MoveTo(0,0);
b.canvas.LineTo(5,5);
image1.picture.assign(b);
with bi.bmiHeader do begin
biWidth:=b.Width;
biHeight:=b.Height;
biSize:=SizeOf(TBITMAPINFOHEADER);
biCompression:=BI_RGB;
biBitCount:=32;
biPlanes:=1;
biSizeImage:=0;
end;
GetDiBits(b.canvas.handle,b.handle,0,10,@a,bi,DIB_RGB_COLORS);
for i:=0 to 9 do begin
s:="";
for j:=0 to 9 do
s:=s+inttohex(a[i,j].rgbGreen,2) +" ";
memo1.lines.add(s);
end;
memo1.lines.add("");
PatBlt(b.canvas.handle,0,0,10,10,whiteness) ;
for i:=0 to 9 do
for j:=0 to 9 do begin
a[i,j].rgbRed:=0;
a[i,j].rgbGreen:=255*Ord(i<>j);
a[i,j].rgbBlue:=0;
end;
for i:=0 to 9 do begin
s:="";
for j:=0 to 9 do
s:=s+inttohex(a[i,j].rgbGreen,2) +" ";
memo1.lines.add(s);
end;
SetDiBits(b.canvas.handle,b.handle,0,10,@a,bi,DIB_RGB_COLORS);
image2.picture.assign(b);
b.free;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c