读书人

c#在pictureBox上剪切图片有关问题

发布时间: 2012-04-14 17:14:21 作者: rapoo

c#在pictureBox上剪切图片问题
剪切图片功能实现了,剪切方法是用鼠标点击,向下拖动形成一个矩形框。但有些小问题。
1.如何实现鼠标向上拖动功能禁用,即向上拖动后什么也不做(目前向上拖动后,会导致程序错误)
2.如何设置鼠标拖动后矩形框的颜色。(我现在设置的,但矩形框没有颜色,透明的)
鼠标代码如下:

C# code
        //定义鼠标事件        private void pictureBox1_MouseDown_1(object sender, MouseEventArgs e)        {            this.Cursor = Cursors.Cross;            this.p1 = new Point(e.X, e.Y);        }        private void pictureBox1_MouseUp_1(object sender, MouseEventArgs e)        {            this.Cursor = Cursors.Default;            this.p2 = new Point(e.X, e.Y);        }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)        {            if (this.Cursor == Cursors.Cross)            {                this.p2 = new Point(e.X, e.Y);                this.pictureBox1.Invalidate();            }        }        //定义鼠标事件        private void pictureBox1_Paint_1(object sender, PaintEventArgs e)//在图片框画图        {            Pen p = new Pen(Color.Black, 1);//画笔            p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;            Rectangle rect = new Rectangle(p1, new Size(p2.X - p1.X, p2.Y - p1.Y));            e.Graphics.DrawRectangle(p, rect);        }


[解决办法]
你首先要知道那部分代码报错,根据错误提示,自己去找原因
至于颜色,你的知道什么是向上,向下,自己根据方向设置brush的颜色啊
[解决办法]
报错嘛多半就是坐标相加之后得到负值了嘛。
在print里面先判断一下计算过的坐标是否符合逻辑,不符合就不做修改
至于你说的颜色问题,这个需要在MouseMove里面写draw,边拖边画一个带颜色的矩形。
[解决办法]
1.直接设成向上拖动其实不合理,你完全可以处理成向上向下都可以选择的,对首尾两个点大小比较然后取一下就行了。
2.可以通过设置画笔来实现啊。

读书人网 >C#

热点推荐