C#画直线的代码!(和windows画图工具一样的效果*)

我的代码不对,不是射线状,就是没有画的过程。怎么样实现在屏幕上一点,拖出一个可变的直线,像橡皮条,松开后确定的那种!!急~~privatevoidDrawing_Mous... 我的代码不对,不是射线状,就是没有画的过程。怎么样实现在屏幕上一点,拖出一个可变的直线,像橡皮条,松开后确定的那种!!急~~
private void Drawing_MouseDown(object sender, MouseEventArgs e)
{
if ((isDrawing = !isDrawing) == true)//判断是否开始绘图
{
startPoint = new Point(e.X, e.Y);
}
}
private void Drawing_MouseMove(object sender, MouseEventArgs e)
{
Graphics g = this.Drawing.CreateGraphics();

if (isDrawing)
{
switch (drawTool)
{
case drawTools.Line:
using (Pen p = new Pen(foreColor, 1))
{
graphics.DrawLine(p, startPoint, endPoint);
}
break;
}
}
private void Drawing_MouseUp(object sender, MouseEventArgs e)
{
isDrawing = false;//标识变量
graphics = this.Drawing.CreateGraphics();
switch (drawTool)
{
case drawTools.Line:
using (Pen p = new Pen(foreColor, 1))
{
graphics.DrawLine(p, startPoint, new Point(e.X,e.Y));
}
break;
}
}
}
我没有单写类,需不需要单写个类啊?DDA算法是解决我这个问题的么?
展开
 我来答
燕文强91
2011-04-23 · 超过34用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:80.8万
展开全部

我这里是画直线和画曲线的两种都有,楼主看看,错不了的,代码如下:

namespace Case02_1

{

    public partial class Form1 : Form

    {

        int startX;     //获取鼠标起始点的X坐标

        int startY;    //获取鼠标起始点的Y坐标

        Graphics g;    //定义Graphics对象实例

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            this.StartPosition = FormStartPosition.CenterScreen;

            this.BackColor = Color.Snow;

        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)

        {

            g = this.CreateGraphics();        

            Pen p = new Pen(Color.Red , 4);

            if (radioButton1.Checked == true)

            {

                g.DrawLine(p, startX, startY, e.X, e.Y);

            } 

        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)

        {

            startX = e.X;

            startY = e.Y;

        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)

        {

            g = this.CreateGraphics();

            Pen p = new Pen(Color.Blue , 2);

            if (radioButton2.Checked == true)

            {

                g.DrawRectangle(p, e.X, e.Y, 1, 1);

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            g = this.CreateGraphics();

            g.Clear(Color.Snow );

        }

        private void button2_Click(object sender, EventArgs e)

        {

            this.Close();

            Application.Exit();

        }

    }

}

百度网友caef6e2bb
2011-04-22 · TA获得超过2425个赞
知道小有建树答主
回答量:1174
采纳率:0%
帮助的人:1396万
展开全部
Graphics g;
private bool drawBegin = false;
private Point starPoint = Point.Empty;

private void Form3_MouseDown(object sender, MouseEventArgs e)
{
this.drawBegin = true;
this.starPoint = e.Location;
g = this.CreateGraphics();
}

private void Form3_MouseMove(object sender, MouseEventArgs e)
{
if (drawBegin)
{
g.Clear(SystemColors.Control);
g.DrawLine(Pens.Black, starPoint, e.Location);
}
}

private void Form3_MouseUp(object sender, MouseEventArgs e)
{
this.drawBegin = false;
this.starPoint = Point.Empty;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-05-05
展开全部
建议参考一下paint.net完全使用.net c#技术开发,功能远远超过画图.如果你安装的有.net framwork3.5,源程序只有4.5mb左右.

如果你要自己开发,gdi+必不可少.
某些功能网上有源码.
可以逐步添加功能.
另外,虚机团上产品团购,超级便宜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式