Zitat von
taza:
Das macht der Rückgabewert der Funktion; er ist true, wenn der Klick innerhalb der Ellipse ist.
Ich habe das ganze mal getestet und dadurch überarbeitet. Ein Fehler war die Wurzel. Da kam noch n abs() rein und ein round() drum rum. Außerdem hab ich die Endbedingung erweitert.
Beginne eine neue Anwendung, erzeuge einen Eventhandler für Form1.Create und Form1.OnPaint. Ersetze dann den ganzen Implementation-Code durch den folgenden:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin canvas.Ellipse(20,20,120,80) end;
function MausklickDrin(x,y:integer):boolean; // x,y=Mauskoordinaten
var yEllipse:integer; // Mauskoordinaten
const Mitte_x=70; Mitte_y=50; a=50; b=30;
begin
x:=x-Mitte_x; y:=y-Mitte_y;
yEllipse:=round(sqrt(abs((1-x*x/a/a)*b*b)));
MausklickDrin:=(y>=-abs(yEllipse)) and (y<=abs(yEllipse)) and (x>=-a) and (x<=a)
end;
procedure TForm1.FormMouseDown;
begin if MausklickDrin(x,y) then form1.caption:='Ist drin' else form1.caption:='Ist nicht drin.' end;