能以一定角度斜着运行的方框(100分)

  • 主题发起人 主题发起人 tanghh
  • 开始时间 开始时间
T

tanghh

Unregistered / Unconfirmed
GUEST, unregistred user!
我想开发一个控件,外形是一个矩形框,其长度可更改,并且可先前后运动,且运动速度可调,但要求能以一定角度(30度)斜着运行。我曾用label来代替,但不能斜着运动。
 
采用动画方式。
TIMER 控制放映速度。矩形自己DRAW。
 
斜着运动不行
 
当然可以!控件本身是常规矩形,但画成斜的,再透明显示,效果就出来了!
 
要斜着运动,我看得算出沿30度斜线上的坐标点
用斜率公式吧.
 
数学没学好吧! 呵呵!
 
呵呵,先找点坐标变换的公式吧。
 
小动画控件很多,学习一下,就知道怎么控制速度,画斜线,有斜率公式呀,
回去翻数学书。长度可更改,不就是在BOUND改变是调用INVALIDATE,写好你
的PAINT方法是最主要的。
 
不知道你要的是 正的 长方形斜着移, 还是斜的(平行四边形)
斜着移。
 
for superMMX 长方形斜着移
 
动态(timer)改变 Left,Top 就可以了。
比如斜向上30度。
Left := Left + Round(StepLength * Sqrt(3) / 2);
Top := Top + StepLength div 2;
Step 指 每次移的对角线长,
估计这样会闪烁。

不会吧,难道数学。。?
 
to superMMX 我要的是长方形先旋转30度后,然后在按30度斜着运动,你说的好象是长方形平动。谢谢
 
明白了,只能显示一个更大的form, 然后用 region,(怎么写来着?)
只显示你原来的窗体。
查一查。
 
首先要明确的是:窗口类控件只能是正方形的区域,但是通过设置窗口的
Region (SetWindowRgn API 函数)可以创建“好像是”不规则的形状的窗口。
你的控件的大小必须能够容纳下斜着放的长方形,然后用 CreatePolygonRgn
创建一个斜的方形 Region ,再去处理你的 Paint 方法。
至于移动,用三角公式计算出水平与垂直的变化点数,改变 Left 和 Top 就
行了,可以用一个内置的 TTimer 控制移动速度。
Good Luck.
From: BaKuBaKu.
 
多人接受答案了。
 
后退
顶部