windows form 中怎么绘制像ps 中可以拖动的参考线呀

来看外星人 2008-07-16 07:06:15
如题,有以下几个我不明白的技术点
1 线一直跟着鼠标走是怎么实现的
2 鼠标移到线上是怎么把他又移动走的
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
s000rd 2008-07-17
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/graphics/drawtools.aspx
allanmorgan 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hbxtlhx 的回复:]
做到如下几点就可以实现:

1:使用双缓冲绘图;
2:记录图形信息(比如坐标);
3:鼠标按左键移动时改变图形信息并重新绘制;

参考:
C# codepublicpartialclassForm1 : Form
{privateintlineX=10;privateintlastX=-1;publicForm1()
{
InitializeComponent();this.SetStyle(ControlStyles.OptimizedDoubleBuffer|ControlStyles.UserPaint|ControlStyles.AllPaintingInWmPaint,true);
}protectedoverridevoi…
[/Quote]
学习
北京的雾霾天 2008-07-17
  • 打赏
  • 举报
回复
做到如下几点就可以实现:

1:使用双缓冲绘图;
2:记录图形信息(比如坐标);
3:鼠标按左键移动时改变图形信息并重新绘制;

参考:

public partial class Form1 : Form
{
private int lineX=10;
private int lastX = -1;
public Form1()
{
InitializeComponent();
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawLine(SystemPens.ControlText, new Point(lineX, 0), new Point(lineX, this.Height));
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (Math.Abs(e.X - lineX) < 5)
{
lastX = e.X;
}
else
{
lastX = -1;
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (this.Capture && lastX!=-1)
{
lineX += e.X - lastX;
lastX = e.X;
this.Invalidate();
return;
}
if (Math.Abs(e.X - lineX) < 5)
{
this.Cursor = Cursors.SizeAll;
}
else
{
this.Cursor = Cursors.Default;
}
}
}
hongqi162 2008-07-17
  • 打赏
  • 举报
回复
MouseDown,MouseMove,MouseUp
lovefootball 2008-07-17
  • 打赏
  • 举报
回复
以及配合各种Mouse事件
lovefootball 2008-07-17
  • 打赏
  • 举报
回复
参考Graphics.DrawRectangle
格拉 2008-07-17
  • 打赏
  • 举报
回复
Fioit 2008-07-17
  • 打赏
  • 举报
回复
在MouseMove事件中使用MouseEventArgs的x,y属性来获得鼠标当前坐标。
lzz19870915 2008-07-16
  • 打赏
  • 举报
回复

110,043

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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