转动效果

wealsh 2010-02-23 10:50:42
在画板上画一个圆框,然后在圆框上画个一点, 让它 绕着这个圆框不停的转,如何实现?谢谢。
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuasoft 2010-02-24
  • 打赏
  • 举报
回复
学习. 楼上代码已收藏
Rex_love_Burger 2010-02-24
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i:integer=0;
implementation

{$R *.dfm}

procedure Circle(Canvas: TCanvas; pt: TPoint; r: Integer);
begin
Canvas.Ellipse(pt.x-r,pt.y-r,pt.x+r,pt.y+r);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
pt,pt2: TPoint;
r:integer;
begin
r:=150;
pt.X:=200;
pt.Y:=200;
PaintBox1.Canvas.Brush.Color:=clBlack;
PaintBox1.Repaint;
PaintBox1.Canvas.Pen.Color := clYellow;
Circle(PaintBox1.Canvas, pt, r);
PaintBox1.Canvas.Pen.Color := clRed;

pt2.X := round(r*cos(i/180*pi))+pt.X;
pt2.Y := round(r*sin(i/180*pi))+pt.Y;
PaintBox1.Canvas.MoveTo(pt.X, pt.Y);
PaintBox1.Canvas.LineTo(pt2.X, pt2.Y);
//PaintBox1.Canvas.Pixels[pt2.X, pt2.Y]:=clRed;
inc(i);
end;

end.
dd_zhouqian 2010-02-23
  • 打赏
  • 举报
回复
楼主可装个directx sdk,看看demo
JPEXE 2010-02-23
  • 打赏
  • 举报
回复
几何问题哦!你说的那个点(A)是在圆上对吧?那它和圆心(O)的距离就是圆的半径(R),这样一来,问题就简化成点O绕着点A保持距离R转圈,则又形成了另一个圆(圆心为A,半径为R),那么圆A的这个圈就是圆O的圆心(点O)的运动轨迹(说得有点吃力-_-!),所以点O的每一个位置就都算出来了,有了圆心就能确定一个圆,后面的就不用再说了吧……自己在草稿上多画画图。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧