【找不到合适标题】问题实现有点难度,没有合适标题,高手们看看,帮帮忙。

taogx 2004-12-15 11:16:44
在做的系统中有一个需要,要做到下面的要求
1、在form上画出一个红色的方框,方框大小固定。
2、用鼠标左键选择方框(不松开左键)后可以用鼠标移动到方框任意位置,方框左键以后方框显示在移动后的位置,得到方框左上顶点和form左上顶点的距离(x,y)。
3、移动到适当位置以后可以用输入角度的方式旋转方框(已方框中线为轴)。

请问这样的需求该怎么实现呢,要是有好的想法请提供,分数不够再加。
...全文
139 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
web700 2005-01-08
  • 打赏
  • 举报
回复
不懂, 学习
VeryOldMan 2005-01-08
  • 打赏
  • 举报
回复
看书的时时候照书上做的练习,恰好实现了你要求的功能1、2,但是没有第三个。
你参考着改改吧:

unit UntCanDrag;

interface

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

type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
RectDragging : Boolean;
OldRect : TRect;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
RectDragging := True;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if RectDragging then
begin
Canvas.Pen.Width := 2;
if GetRop2(Canvas.Handle) <> R2_NOT then
SetRop2(Canvas.Handle, R2_NOT);
Canvas.Brush.Style := bsClear;
Canvas.Rectangle(OldRect.Left, oldRect.Top, OldRect.Right, OldRect.Bottom);
Canvas.Rectangle(X-20, Y-20, X+20, Y+20);
OldRect := Rect(X-20, Y-20, X+20, Y+20);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
RectDragging := False;
end;

end.
DraLib 2005-01-06
  • 打赏
  • 举报
回复
楼主的这张贴子好象发了很长时间了啊~
Jay_L 2004-12-17
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3654/3654301.xml?temp=.6977198
帮忙看看。谢谢!
taogx 2004-12-17
  • 打赏
  • 举报
回复
问题还没有解决。
DraLib 2004-12-16
  • 打赏
  • 举报
回复
建议楼主去看看立体几何~~~~
数学题啊!
seekmydoom 2004-12-16
  • 打赏
  • 举报
回复
学习,帮你up
nyf1220 2004-12-16
  • 打赏
  • 举报
回复
框是自己画出来的??

那应该知道具体位置吧?

然后移动的时候,根据鼠标所在矩形框里的相对位置来算出移动后的位置,

旋转就重新画一个。

哈哈,俺就这么苯的方法了。。
litangel 2004-12-16
  • 打赏
  • 举报
回复
呵呵。。。又想了一下。
TShape控件也不能旋转呀,
还是直接在Canvas上画吧。
litangel 2004-12-16
  • 打赏
  • 举报
回复
提示:
由于你第3步要求旋转。
所以建立用一个TShape控件。
然后在from的MouseDown, MouseMove, MouseUp三事件中写代码,即可实现你要求的1,2。
bmwyc 2004-12-16
  • 打赏
  • 举报
回复
友情up
zwb666 2004-12-16
  • 打赏
  • 举报
回复
学习
zzlingaaa 2004-12-16
  • 打赏
  • 举报
回复
一个框的旋转画法应该不难.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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