TCanvas.Pixels...:(

0

Czesc.
Kto zna jakas efetywniejszy sposob operacji na pixelach niz TCanvas.Pixels?? Poniewaz jak scanuje wszystkie pixele w moim Image to animacja wynosi 1klatka/sec :(

BTW. Mam nadzieje, ze dobrze opisalem moj problem.

0

jest sposób.. Poszukaj w helpie <font color="blue">ScanLine</span>. Jeśli sobie nie poradzisz, to pisz.. znam się na tym :d

0

jest sposób.. Poszukaj w helpie <font color="blue">ScanLine</span>. Jeśli sobie nie poradzisz, to pisz.. znam się na tym :d

Haczyk przy ScanLine to taki, że jedynie z Bitmapami działa (ale rzeczywiście bardzo szybkie).
Jeżeli nie musisz operować na pojedynczych pikselach to używaj np. Rectangle. Ew. operuj na kopi w pamięci (wówczas najlepiej TBitmap, aby wykorzystać ScanLine) i wyświetlaj na TCanvas.

0

To ja poprosilbym o kodzik rysujacy 1 pixel o kolorze niebieskim w punkcie (100, 200) z wykorzystaniem ScanLine oczywiscie.

0

kodzik chcesz? no problem jeżeli punkt to x=100 y=200 to będzie:

type TRGBTriple=packed record
R, G, B: Byte
end;

TScanLineRGB=packed array of TRGBTriple;

proceudre SetBluePoin(Bitmap: TBitmap; X, Y: Cardinal);
var
SCRGB: TRGBTriple;
begin
SCRGB:=Bitmap.ScanLine[Y]
with SCRGB[X] do
begin
R:=0;
G:=0;
B:=255;//to je niebieskin'
end;
end;

Kodzik jest niepewny więc proszę o poprawienie (w osobnym poście ofcoz

0

Try DelphiX. Komponent DXDraw ma tam sporo przydatnych opcji.

0
  1. Nie ma sensu wykożystywać scanLine do rysowania JEDNEGO piksela! To jeszcze bardziej spowolni program. W scanLine właśnie o to chodzi że operujemy na całej linii w ciącu jednego przebiegu!

  2. Nie trzeba deklarować własnych typów (TRGBTriple), mamy już gotowe PByteArray.

0
  1. Nie trzeba deklarować własnych typów (TRGBTriple), mamy już gotowe PByteArray.

PByteArray jest kicha, co prawda łapie teoretycznie zażdy system kolorów, ale w tedy zabiera jedno rozwiązanie, które w delphi jest na jednym z podstawowych miejsc: LOGIKA ; Lepiej jest RGBTArray[0].B:=255 niż ByteArray[0]:=255 //wiadmomo, BGR

1 użytkowników online, w tym zalogowanych: 0, gości: 1