[Delphi] Kolizje

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

maciej-01 ten post 07-02-2010 19:27


Użytkownik
Status: Offline
Dołączył: 23-10-2008

Witam. Jak sprawdzić czy 2 komponenty TImage o kształcie prostokąta ze sobą kolidują?
Szukałem w gogle lecz nie ma [glowa]  :-/  :-|  Dziękuje za pomoc.

maciej-01  [diabel]
Przejdź na górę strony
cytuj
ybook ten post 07-02-2010 20:00





ok.. używać  googla umiesz.. a mózgu? przecież to jest proste jak dwa plus dwa.. wystarczy ruszyć głową..
Przejdź na górę strony
cytuj
cimak ten post 07-02-2010 22:03
avatar

Użytkownik
Status: Offline
Dołączył: 01-12-2002
Skąd: Chatka na środku lasu
ybook napisał:
ok.. używać  googla umiesz..

 :|  tez nie umie.
http://www.google.pl/search?&q=delphi+kolizje

Ostatnio zmodyfikowany: 07-02-2010 22:05 przez cimak
Przejdź na górę strony
cytuj
lankusiek ten post 07-02-2010 23:06
avatar

Użytkownik
Status: Offline
Dołączył: 04-07-2008
Skąd: Warszawa
var
l,p,g,d: boolean;
begin
if image1.Left+ image1.Width > image2.Left then l:= true else l:= false;
if image1.Left < image2.Left+ image2.Width then p:= true else l:= false;
if image1.Top+ image1.Height > image2.Top then g:= true else l:= false;
if image1.Top< image2.Top+ image2.Height then d:= true else l:= false;

if (l and p and g and d) then ShowMessage('kolizja');
end;


Ostatnio zmodyfikowany: 07-02-2010 23:07 przez lankusiek
Przejdź na górę strony
cytuj
Azarien ten post 07-02-2010 23:56
avatar

Użytkownik
Status: Offline
Dołączył: 18-12-2003

lankusiek napisał:
var
l,p,g,d: boolean;
begin
if image1.Left+ image1.Width > image2.Left then l:= true else l:= false;
if image1.Left < image2.Left+ image2.Width then p:= true else l:= false;
if image1.Top+ image1.Height > image2.Top then g:= true else l:= false;
if image1.Top< image2.Top+ image2.Height then d:= true else l:= false;

if (l and p and g and d) then ShowMessage('kolizja');
end;


Nie wnikając w merytoryczną poprawność i pomijając prawdopodobną literówkę przy else, funkcjonalnie równoważne, a lepsze, będzie:
begin
  if (image1.Left + image1.Width > image2.Left) and
     (image1.Left < image2.Left + image2.Width) and
     (image1.Top + image1.Height > image2.Top) and
     (image1.Top < image2.Top + image2.Height) then
    ShowMessage('kolizja');
end;
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0730 sek. (zapytań SQL: 9)