这个问题应该没几个人能回答,100送给谁呢?(100分)

  • 主题发起人 主题发起人 周键
  • 开始时间 开始时间

周键

Unregistered / Unconfirmed
GUEST, unregistred user!
我的构思是:当我动态的在FORM上放置一个任意大小的IMAGE,它里面已经有了PICTURE,现在
我点中它,按鼠标不放,当我移动鼠标,例如往下移动,则IMAGE会绕它本身的中心点旋转
一个角度(也可不用鼠标,而直接设定一个IMAGE旋转角度),注:不是它里面的PICTURE
旋转一个角度(这个容易做到)。现在我已经做到点中IMAGE后,在它周围出现8个点来对它
进行拖动,拉伸。
 
有现成的控件!
既然没几人能回答,就送给第一个进来的吧
 
可把控件给我,最好有原原代码。但我希望继续讨论。
 
编程的话,可以用计算机图形学的知识处理图形的转动,重画窗口中相关的部分
 
不可能直接用TImage做到这个,
只有从TWinControl继承自己写一个控件.
把Picture画进该控件的Canvas里,
响应鼠标消息处理画边框,并处理旋转
(连Picture带边框, 你说这个很容易的 :-)
 
不懂不懂
 
PICTURE旋转我已经做到了,“不可能直接用TImage做到这个”应该是对的,但下一步呢?


 
建立控件啊 :-P
去看一些继承TGraphicControl自定义控件的Sample ,
<<Delphi3从入门到精通>>里有一个时钟的例子,可以参考
 
书名是“Delphi3从入门到精通”
 
SetWindowRgn设置你的TWinControl外形为旋转后的边框.
 
听了Another_eYes的话有了一些眉目,请各位继续讨论。
 
还有想发表意见吗?
 
如果你的显示图形的构件是由TWinControl继承下来的,
SetWindowRgn就是最好的解决方案了。
如果是从TGraphicControl,
就自己MoveTo,LineTo画边框吧。
 
一定要设置一个image吗?我觉得看了你的构思,你可能只是希望有这样一种旋转效果吧?
不知道我理解的对不对。如果只是要边框旋转而内部的图形不旋转,我觉得为什么不尝试
着使用一些单纯的图形的方法呢?
如果是这样把问题转化为单纯的图形处理,我想可以有下面两个方法是可行的。
第一,做旋转变换。这个变换的公式你可以去很多图形书中找到,现在我手头没有书,不过
你想要的话,我可以找到。
第二,利用windows的api,利用rgn和path解决这个边框旋转的问题。这个方法比上面那个
直接。但是在delphi中使用上面两个东东的时候要注意你的操作系统。有很多函数只在
NT下可以使用。




 
偏执狂.
旋转Timage有必要吗?如果你连旋转Picture都做到了.
 
旋转原理:X2=X0+COS@(X1-X0)-SIN@(Y1-Y0)
Y2=Y0+SIN@(X1-X0)+COS@(Y1-Y0)
@:旋转角度(顺时针为正)
(X0,Y0)中心轴点 (X1,Y1)旋转前的位置 (X2,Y2)旋转后的位置

 
可以了,大家都说的很好,怎么还赖着?
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
D
回复
0
查看
664
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部