![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
read write pixel (hight fps) [D5, D6, 95/98, ME, XP]
Dr.M@$ © (2007-05-06 22:30:00)Подскажите пожайлуста как из битмапа прочитать или записать пиксель но чтоб это быстро работало
picture.canvas.getpixe работает ооооочень медленно.
Dr.M@$ (2007-05-09 18:17:00) [21]так я и по хелпу смотрю... тап пример
var
x,y : Integer;
BitMap : TBitMap;
P : PByteArray;
begin
BitMap := TBitMap.create;
try
BitMap.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp');
for y := 0 to BitMap.Height -1 do
begin
P := BitMap.ScanLine[y];
for x := 0 to BitMap.Width -1 do
P[x] := y;
end;
Canvas.Draw(0,0,BitMap);
finally
BitMap.Free;
end;
end;
Dr.M@$ (2007-05-09 18:15:00) [22]похоже я так и ничего невкурю пока не пощупаю исходник :(
Loginov Dmitry (2007-05-09 18:15:00) [23]> что-то я вообще немогу понять как ведет себя команда ScanLine.!
> !! она что пиксель читает или нет? или работает как-то по
> другому.
хэлп на что нам дан свыше?
Rial (2007-05-09 18:09:00) [24]Дает указатель на строку пикселей с координатой Y = Y.
Efir (2007-05-09 18:08:00) [25]Она получает указатель на начало строки.
Dr.M@$ (2007-05-09 18:06:00) [26]что-то я вообще немогу понять как ведет себя команда ScanLine.!!! она что пиксель читает или нет? или работает как-то по другому.
Dr.M@$ (2007-05-09 17:49:00) [27]мне просто нужно с одной картинки всять пиксель а в другую его поставить :(
Dr.M@$ (2007-05-09 17:48:00) [28]>Как переместить в данных случае данные
из P1 в P2 знаешь ?
наверное нет..
Rial (2007-05-09 17:23:00) [29]1. > image2.Picture.Bitmap.ScanLine[x]
Это есть указатель на массив данных.
P1, P2 : ^Array of Byte;
Как переместить в данных случае данные
из P1 в P2 знаешь ?
2. Max(x) = Bitmap.Height
Dr.M@$ (2007-05-09 17:16:00) [30]и вновь возник вопрос... даже два:
1) image2.Picture.Bitmap.ScanLine[x]:=image1.Picture.Bitmap.ScanLine[x]; неполучается
2) как мне получить максимальное сначение X?
а в осталном вродебы все ок.
Dr.M@$ (2007-05-09 17:12:00) [31]пошел пробывать ...
homm (2007-05-08 22:03:00) [32]> :) и что мне делать?
Написать вот так, что-бы хотя-бы создать отъект, к полям которого ты собираешь обращаться:
procedure TForm1.Button1Click(Sender: TObject);
var x,y:integer;
p_color:pointer;
begin
x:=1;
image1.Canvas;
image1.Picture.Bitmap.HandleType:=(bmDIB);
p_color:=image1.Picture.Bitmap.ScanLine[x];
end;
Dr.M@$ (2007-05-08 14:17:00) [33]:) и что мне делать?
Loginov Dmitry (2007-05-07 20:50:00) [34]> где я неправ?
Очевидно, тута: image1.Picture.Bitmap.HandleType:=(bmDIB);
Dr.M@$ (2007-05-07 18:35:00) [35]И снова здравствуйте! делаю следующее
procedure TForm1.Button1Click(Sender: TObject);
var x,y:integer;
p_color:pointer;
begin
x:=1;
image1.Picture.Bitmap.HandleType:=(bmDIB);
p_color:=image1.Picture.Bitmap.ScanLine[x];
end;
и при на жатии Button1 выдает ошибку out of range scaneline.... где я неправ?
Dr.M@$ (2007-05-07 15:18:00) [36]Большое спасибо, пойду пробывать
homm (2007-05-06 23:01:00) [37]> [1] DVM © (06.05.07 22:36)
> Scanline
Предворительно сделай его DIB — эффект удвоется :)
DVM (2007-05-06 22:36:00) [38]Scanline