关于画图的2个问题
1,当选择form1的按钮时怎样可以在form2的picturebox中画图?应该怎样创建picturebox的grahics对象?
2,怎样实现图像的整体、部分选取,复制?并且在选取时被选中的区域有个虚线框,在复制完后虚线框消失?
请高手们不吝赐教 最好有代码 谢谢!
[解决办法]
使用消息,或者事件
[解决办法]
继承PictureBox控件,然后添加类似如下的代码:
- C# code
//鼠标拖动的虚框实现private Point m_StartPoint;private Point m_LastPoint;protected override void OnMouseDown(MouseEventArgs e){ base.OnMouseDown(e); this.m_StartPoint = e.Location; m_LastPoint = this.m_StartPoint;}protected override void OnMouseUp(MouseEventArgs e){ base.OnMouseUp(e); Point endPoint = e.Location; int l = m_LastPoint.X > this.m_StartPoint.X ? this.m_StartPoint.X : m_LastPoint.X; int t = m_LastPoint.Y > this.m_StartPoint.Y ? this.m_StartPoint.Y : m_LastPoint.Y; int r = m_LastPoint.X > this.m_StartPoint.X ? m_LastPoint.X : this.m_StartPoint.X; int b = m_LastPoint.Y > this.m_StartPoint.Y ? m_LastPoint.Y : this.m_StartPoint.Y; Rectangle rect = Rectangle.FromLTRB(l, t, r, b); ControlPaint.DrawReversibleFrame(this.RectangleToScreen(rect), SystemColors.Highlight, FrameStyle.Dashed);}protected override void OnMouseMove(MouseEventArgs e){ base.OnMouseMove(e); if (e.Button == MouseButtons.Left) { Point endPoint = e.Location; int l = m_LastPoint.X > this.m_StartPoint.X ? this.m_StartPoint.X : m_LastPoint.X; int t = m_LastPoint.Y > this.m_StartPoint.Y ? this.m_StartPoint.Y : m_LastPoint.Y; int r = m_LastPoint.X > this.m_StartPoint.X ? m_LastPoint.X : this.m_StartPoint.X; int b = m_LastPoint.Y > this.m_StartPoint.Y ? m_LastPoint.Y : this.m_StartPoint.Y; Rectangle rect = Rectangle.FromLTRB(l, t, r, b); ControlPaint.DrawReversibleFrame(this.RectangleToScreen(rect), SystemColors.Highlight, FrameStyle.Dashed); int _l = endPoint.X > this.m_StartPoint.X ? this.m_StartPoint.X : endPoint.X; int _t = endPoint.Y > this.m_StartPoint.Y ? this.m_StartPoint.Y : endPoint.Y; int _r = endPoint.X > this.m_StartPoint.X ? endPoint.X : this.m_StartPoint.X; int _b = endPoint.Y > this.m_StartPoint.Y ? endPoint.Y : this.m_StartPoint.Y; Rectangle _rect = Rectangle.FromLTRB(_l, _t, _r, _b); ControlPaint.DrawReversibleFrame(this.RectangleToScreen(_rect), SystemColors.Highlight, FrameStyle.Dashed); m_LastPoint = endPoint; }}
[解决办法]
上面 说得很详细了,虚线筐就是用鼠标事件,draw一个矩形出来。然后不用的时候再重新画这个图片。