ich habe genau das gleich versucht und es hat mich tage gekostet um festzustellen das es an Tranzparentcolor liegt weil ich hatten ihn so zugewiesen wie du auch doch das klappte nicht.
Ich meine es liegt dran das die farben nicht 100%ig überein stimmen du musst irgenwie eine Tolleranz einbauen.
ich habe es so gelöst versuche mal folgenden code:
Delphi-Quellcode:
function collision(Bild1, Bild2:TBitMap; x1,y1,x2,y2:Integer):Boolean;
var
sx,sy:Integer;
test:Boolean;
r1,r2,r3:TRect;
begin
// Position vom zweiten objekt berechnen
sx:=x2-x1; sy:=y2-y1;
test:=False;
r2.Left:=x2; r2.Top:=y2; r2.Right:=x2+bild2.Width; r2.Bottom:=y2+bild2.Height;
r1.Left:=x1; r1.Top:=y1; r1.Right:=x1+bild1.Width; r1.Bottom:=y1+bild1.Height;
if IntersectRect(r3,r1,r2) = True then begin
if Bild1.Canvas.Pixels[sx,sy] = Bild1.Canvas.Pixels[1,1] then test:=False
else test:=True;
end;
result:=Test;
end; // Collsion
das problem dabei ist jetzt nur noch das wenn du von oben kommst fehler kommen evlt. bekommst du eine lösung hin oder hast eine idee wie es gelöst werden könnte