Skocz do zawartości

[DelphiX] Operacje na pikselach


Caesar

Polecane posty

Mam problem z użyciem modułu PixelCore (jak i również FastPixels, TurboPixels, PixelsDX), robię wszystko jak w tutorialach, ale wyskakuje mi błąd dostępu do pamięci po uruchomieniu programu. Możecie mi dokładnie wyjaśnić, jak użyć któregoś z wymienionych modułów? Dajcie jakiś kod albo działający program.

 

Tylko nie piszcie, że to "jest opisane i wystarczy się rozejrzeć" i nie odsyłajcie mnie do przykładów i dem z DelphiXa... Potrzebuję zwykłego, prostego programu...

 

 

// temat przeniesiony z działu Delphi - sazian

Link do komentarza
Udostępnij na innych stronach

Oto kod zdarzenia OnTimer:
[code=Delphi] procedure TfDX.TimerTimer(Sender: TObject; LagCount: Integer);
var
i, j, c: Integer;
punkt: TPoint;
kolor: TColor;
tx, ty: Integer;
rx, ry: Integer;
begin
Ekran.Surface.Fill(0);
//rys.Image.DrawRotate(Ekran.Surface, 200, 200, 100, 100, 1, 0.5, 0.5, kat);
//rys.Image.DrawWaveX(Ekran.Surface, 350, 350, 100, 100, 3, 10, 10, 10);
Engine.Draw;
Images.Items.Find('paleta').DrawRotateAlphaCol(Ekran.Surface, 0, 0, 150, 150, 0, 0, 0, 0, pc);
Engine.Move(LagCount);

GetCursorPos(punkt);
Canvas.Handle:=GetWindowDC(GetDesktopWindow);
kolor:=Canvas.Pixels[punkt.X,punkt.Y-1];
Ekran.Surface.Canvas.Brush.Color:=kolor;
Ekran.Surface.Canvas.TextOut(400, 200, ' ' + ColorToString(kolor) + ' ');
Ekran.Surface.Canvas.Brush.Color:=clWhite;
Ekran.Surface.Canvas.TextOut(400, 220, ' ' + IntToStr(GetRValue(kolor)) + ' ');
Ekran.Surface.Canvas.TextOut(400, 240, ' ' + IntToStr(GetGValue(kolor)) + ' ');
Ekran.Surface.Canvas.TextOut(400, 260, ' ' + IntToStr(GetBValue(kolor)) + ' ');
Ekran.Surface.Canvas.TextOut(430, 220, ' ' + IntToStr(GetRValue(ZmienKolor(kolor))) + ' ');
Ekran.Surface.Canvas.TextOut(430, 240, ' ' + IntToStr(GetGValue(ZmienKolor(kolor))) + ' ');
Ekran.Surface.Canvas.TextOut(430, 260, ' ' + IntToStr(GetBValue(ZmienKolor(kolor))) + ' ');

rx:=(fDX.Left + (fDX.Width - fDX.ClientWidth) div 2) + Ekran.Left;
ry:=(fDX.Top + (fDX.Height - fDX.ClientHeight - (fDX.Width - fDX.ClientWidth) div 2)) + Ekran.Left;
tx:=punkt.X - (fDX.Left + (fDX.Width - fDX.ClientWidth) div 2) + Ekran.Left;
ty:=punkt.Y - (fDX.Top + (fDX.Height - fDX.ClientHeight - (fDX.Width - fDX.ClientWidth) div 2)) + Ekran.Left;
Ekran.Surface.Canvas.TextOut(400, 280, ' ' + IntToStr(tx) + 'x' + IntToStr(ty) + ' ');
Ekran.Surface.Canvas.TextOut(400, 300, ' ' + IntToStr(punkt.X) + 'x' + IntToStr(punkt.Y) + ' ');

RysujPiksel(gx + 50, gy + 50, kolor);
rys.Image.DrawRotate(Ekran.Surface, 200, 200, 100, 100, 1, 0.5, 0.5, kat);

**********************
for i:=1 to 51 do
for j:=1 to 51 do
begin
//zasieg[i, j]:=Ekran.Surface.Canvas.Pixels[i + gx, j + gy];
//Ekran.Surface.Canvas.Pixels[i + gx, j + gy]:=ZmienKolor(zasieg[i, j]);
DXSurfaceLock(Ekran.Surface.ISurface4, Ekran.Surface.BitCount);
PutPixel(i + gx + 51, j + gy, ZmienKolor(Canvas.Pixels[i + gx+rx, j + gy+ry]));
DXSurfaceUnlock(Ekran.Surface.ISurface4);
//Ekran.Surface.Canvas.Pixels[i + gx+51, j + gy]:=ZmienKolor({Ekran.Surface.}Canvas.Pixels[i + gx+rx, j + gy+ry]);
end;
**********************

Ekran.Surface.Canvas.Release;
Ekran.Flip;
kat:=kat + 0.1;
end;ŚQ`IAĄ%ŃQ
ą)(ŃŃ%Ń)(M

ąi-ąĄ(M
QŃ=Ź
ąQMŃĄi-ąĄŹ(M
Aąmti-ąĄ(źa]ŃIŃ)ŚQ`
ŃĄMQ=)(I(%Ńą(%ѹѥ((MĄ5
ąĄ`(ąŃQŃ(((Q=
ŃĄ(%%%ŃŃźŹź(]ŃźąŃ(!ĄźąŃ(`ź(dź(1џѹ(
źąąŃŹ(MŃ(M((QąQ();ŚŚ[eś[]zZaYH]^[K[YN[NHX^HHYHXBBB[KTXQXBX^YKX^[[Z[]^[[X^TXQ]B][YYKX^[WKX B][ [/code]

mogę wysłać wszystkie źródła... tzn. cały projekt (choć to na razie testowy...)

Sorry, że od razu nie umieściłem tematu w tym dziale... tongue.gif

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...