读书人

关于画图的2个有关问题

发布时间: 2012-01-02 22:40:04 作者: rapoo

关于画图的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一个矩形出来。然后不用的时候再重新画这个图片。

读书人网 >C#

热点推荐