掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
正三角形と正方形を書くには? (ID:21408)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
private に FStartPoint:TPoint; を宣言 implementation procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then FStartPoint:= Point(X,Y); end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DistX,DistY: integer; x1,y1,x2,y2: integer; begin if ssLeft in Shift then begin DistX:= abs( X - FStartPoint.X); //DistY:= abs( Y - FStartPoint.Y); //楕円 DistY:= DistX; //円 x1:= FStartPoint.X - DistX; x2:= FStartPoint.X + DistX; y1:= FStartPoint.Y - DistY; y2:= FStartPoint.Y + DistY; Canvas.Ellipse( x1,y1,x2,y2); end; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const //CON_MATH_R_TRANS_D=57.2957801818848; // (180/pi) CON_MATH_D_TRANS_R=0.0174632929265499; // (pi/180) var DistX,DistY: integer; x1,y1, x2,y2, x3,y3: integer; begin DistX:= abs( X - FStartPoint.X); //DistY:= abs( Y - FStartPoint.Y); //楕円の円周上に3点を置く場合 DistY:= DistX; //円の円周上に3点を置く場合 x1:= FStartPoint.X; y1:= FStartPoint.Y - DistY; x2:= trunc(FStartPoint.X + (cos(CON_MATH_D_TRANS_R * (30)) * DistX)); y2:= trunc(FStartPoint.Y + (sin(CON_MATH_D_TRANS_R * (30)) * DistY)); x3:= trunc(FStartPoint.X - (cos(CON_MATH_D_TRANS_R * (-30)) * DistX)); y3:= trunc(FStartPoint.Y - (sin(CON_MATH_D_TRANS_R * (-30)) * DistY)); Canvas.MoveTo(x1,y1); Canvas.LineTo(x2,y2); Canvas.LineTo(x3,y3); Canvas.LineTo(x1,y1); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.