Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

read write pixel (hight fps) [D5, D6, 95/98, ME, XP]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо