首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Draw rectangle C# Mouse_down working Mouse_up not

Draw rectangle C# Mouse_down working Mouse_up not
EN

Stack Overflow用户
提问于 2013-04-02 16:42:22
回答 1查看 407关注 0票数 0

我想在mouse_down事件工作正常的窗体上绘制一个矩形,但是如何对mouse_up进行编程呢?我该如何确定起始坐标。

http://oi49.tinypic.com/2wcnof8.jpg

代码语言:javascript
复制
    Rectangle rect = new Rectangle();
    Color rastercolor = Color.Black;

    private void drawGrid(Color rastercolor)
    {
        Graphics gfx = this.CreateGraphics();
        Pen pen = new Pen(rastercolor);
        for (int i = 0; i <= 2000; i = i + 20)
        {
            gfx.DrawLine(pen, 0, i, 2000, i);
        }
        for (int x = 0; x < 2000; x = x + 20)
        {
            gfx.DrawLine(pen, x, 0, x, 2000);
        }
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        rect = new Rectangle(e.X, e.Y, 0, 0);

        if (e.Button == MouseButtons.Middle)
        {
            ColorDialog coldial = new ColorDialog();
            coldial.ShowDialog();
            Color rastercolor = coldial.Color;
            tekenGrid(rastercolor);
        }
    }

    protected override void OnMouseMove(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            rect = new Rectangle(rect.Left, rect.Top, e.X - rect.Left, e.Y - rect.Top);
        }
    }


    protected override void OnPaint(PaintEventArgs e)
    {
        tekenGrid(rastercolor);
        using (Pen pen = new Pen(Color.Red, 2))
        {
            e.Graphics.DrawRectangle(pen, rect);
        }
    }

    private void Frm1_MouseUp(object sender, MouseEventArgs e)
    {
        Graphics g = this.CreateGraphics();
        Pen pen = new Pen(Color.Red, 2);
        g.DrawRectangle(pen, rect);
    }

    private void Frm1_Load(object sender, EventArgs e)
    {

    }

    private void Frm1_MouseDown(object sender, MouseEventArgs e)
    {
        Graphics g = this.CreateGraphics();
        Pen pen = new Pen(Color.Blue, 2);
        g.DrawRectangle(pen, rect);
    }
}

}

任何帮助都将不胜感激,

EN

回答 1

Stack Overflow用户

发布于 2013-04-02 17:09:52

不确定这是不是你要做的。请尝试此代码。

代码语言:javascript
复制
 public partial class Form1 : Form
 {
    public Form1()
    {
        InitializeComponent();
        this.DoubleBuffered = true;
    }

    Rectangle rect = new Rectangle(); 
       Color _rastercolor = Color.Black;
       private Pen _pen=new Pen(Color.Red,2);

        private void tekenGrid(Color rastercolor,  Graphics gfx)
        {

            Pen pen = new Pen(rastercolor);
            for (int i = 0; i <= 2000; i = i + 20)
            {
                gfx.DrawLine(pen, 0, i, 2000, i);
            }
            for (int x = 0; x < 2000; x = x + 20)
            {
                gfx.DrawLine(pen, x, 0, x, 2000);
            }
        }

        protected override void OnMouseDown(MouseEventArgs e)
        {
            rect = new Rectangle(e.X, e.Y, 0, 0);

            if (e.Button == MouseButtons.Middle)
            {
                ColorDialog coldial = new ColorDialog();
                coldial.ShowDialog();
                Color rastercolor = coldial.Color;
                tekenGrid(rastercolor,this.CreateGraphics());
            }
            else
            base.OnMouseDown(e);
        }

        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                rect = new Rectangle(rect.Left, rect.Top, e.X - rect.Left, e.Y - rect.Top);
                this.Refresh();
            }

            base.OnMouseMove(e);
        }


        protected override void OnPaint(PaintEventArgs e)
        {
            tekenGrid(_rastercolor,e.Graphics);
                e.Graphics.DrawRectangle(_pen, rect);
        }

        private void Frm1_MouseUp(object sender, MouseEventArgs e)
        {
            _pen = new Pen(Color.Red, 2);
            this.Refresh();
        }

        private void Frm1_Load(object sender, EventArgs e)
        {

        }

        private void Frm1_MouseDown(object sender, MouseEventArgs e)
        {
           _pen = new Pen(Color.Blue, 2);

        }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15759644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档