画图问题,鼠标移动时如何显示图形?谢谢!!

潜心爷爷 2013-12-28 09:47:26
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

Point P1 = new Point();
Point P2 = new Point();
bool isMouseDown = false;

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
DrawTY(this.CreateGraphics(), P1.X, P1.Y, P2.X - P1.X, P2.Y - P1.Y);
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void Form1_Paint(object sender, PaintEventArgs e)
{

Graphics g = e.Graphics;

}

private void DrawTY(Graphics g, int a,int b,int c,int d )
{
GraphicsPath roundedRect = new GraphicsPath();
roundedRect.AddArc(a, b, c, d, 200, 360);


//从路径中创建区域
Region pathRegion = new Region(roundedRect);
// g.FillRegion(new SolidBrush(Color.Blue), pathRegion);
g.DrawPath(Pens.Blue, roundedRect);

}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (isMouseDown == false)
{
isMouseDown = true;

P1.X = e.X;
P1.Y = e.Y;
}
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (isMouseDown == true)
{

P2.X = e.X;
P2.Y = e.Y;

this.Invalidate();
}
}
}
}


已经可以实现画出椭圆。

但是在画的时候,没有出现椭圆,只是鼠标移动的时候,没有图,在鼠标up后,才有图。

请问这个如何解决啊。
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
明月书君 2013-12-29
  • 打赏
  • 举报
回复
引用 4 楼 u013308717 的回复:
[quote=引用 2 楼 shao_winds 的回复:] 你要想在鼠标移动的时候也出现圆,那么就要在这个函数里 Form1_MouseMove(object sender, MouseEventArgs e) 调用那个画圆的函数而不仅仅只是在up那个函数里调用画圆那个函数
谢谢你!!![/quote] 客气
潜心爷爷 2013-12-29
  • 打赏
  • 举报
回复
引用 3 楼 bf6543 的回复:

void Form1_Paint(object sender, PaintEventArgs e)
{
if (isMouseDown)
{
DrawTY(this.CreateGraphics(), Math.Min(P1.X, P2.X), Math.Min(P1.Y, P2.Y), Math.Abs(P2.X - P1.X) + 1, Math.Abs(P2.Y - P1.Y) + 1);
}
}


我可以再问一个问题吗?

如果我先在旁边设置一个按钮


对我的这个椭圆进行改颜色,应该怎么?

还有,请问如何画完一个,固定在界面上,在画一个呀?
谢谢!!
潜心爷爷 2013-12-29
  • 打赏
  • 举报
回复
引用 3 楼 bf6543 的回复:

void Form1_Paint(object sender, PaintEventArgs e)
{
    if (isMouseDown)
    {
        DrawTY(this.CreateGraphics(), Math.Min(P1.X, P2.X), Math.Min(P1.Y, P2.Y), Math.Abs(P2.X - P1.X) + 1, Math.Abs(P2.Y - P1.Y) + 1);
    }
}
谢谢你,新年快乐!
潜心爷爷 2013-12-29
  • 打赏
  • 举报
回复
引用 2 楼 shao_winds 的回复:
你要想在鼠标移动的时候也出现圆,那么就要在这个函数里 Form1_MouseMove(object sender, MouseEventArgs e) 调用那个画圆的函数而不仅仅只是在up那个函数里调用画圆那个函数
谢谢你!!!
bu_ge 2013-12-28
  • 打赏
  • 举报
回复

void Form1_Paint(object sender, PaintEventArgs e)
{
    if (isMouseDown)
    {
        DrawTY(this.CreateGraphics(), Math.Min(P1.X, P2.X), Math.Min(P1.Y, P2.Y), Math.Abs(P2.X - P1.X) + 1, Math.Abs(P2.Y - P1.Y) + 1);
    }
}
明月书君 2013-12-28
  • 打赏
  • 举报
回复
你要想在鼠标移动的时候也出现圆,那么就要在这个函数里 Form1_MouseMove(object sender, MouseEventArgs e) 调用那个画圆的函数而不仅仅只是在up那个函数里调用画圆那个函数
yaxinrengu 2013-12-28
  • 打赏
  • 举报
回复
http://www.codeproject.com/Articles/8494/DrawTools 可以参考这个!

110,567

社区成员

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

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

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