zoukankan      html  css  js  c++  java
  • C# 鼠标移动Winform窗体内或者panel容器内的控件 显示虚线/实现虚线框来确定位置

    C# 鼠标移动WinForm窗体或者panel容器内的控件 移动虚线/实现虚线框来确定位置

    1.用到的方法介绍

    今天,根据领导指示指导移动容器内的控件,生成虚线框,使用  

    ControlPaint.DrawReversibleFrame
     1 //
     2 // 摘要:
     3 // 在屏幕上的指定边界内,按指定背景色绘制处于指定状态的可逆框架。
     4 //
     5 // 参数:
     6 // rectangle:
     7 // 代表要绘制矩形的尺寸的 System.Drawing.Rectangle(采用屏幕坐标)。
     8 //
     9 // backColor:
    10 // 框架的背景的 System.Drawing.Color。
    11 //
    12 // style:
    13 // System.Windows.Forms.FrameStyle 值之一,它指定框架的样式。
    14 public static void DrawReversibleFrame(Rectangle rectangle, Color backColor, FrameStyle style);

    2.程序运行效果

    3.代码实现

     1         public Form1()
     2         {
     3             InitializeComponent();
     4         }
     5 
     6         private Point downPoint;
     7         private Rectangle downRectangle;
     8         private Rectangle lastRectangle;
     9 
    10         private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    11         {
    12             if (e.Button != MouseButtons.Left) return;
    13 
    14             downPoint = e.Location;
    15             downRectangle =new Rectangle(0, 0, ((Control)sender).Width, pictureBox1.Height);
    16             downRectangle.Offset(((Control)sender).PointToScreen(new Point(0, 0)));
    17             ControlPaint.DrawReversibleFrame(downRectangle, Color.White, FrameStyle.Thick);
    18 
    19             lastRectangle = downRectangle;
    20         }
    21         private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    22         {
    23             if (e.Button != MouseButtons.Left) return;
    24 
    25             ControlPaint.DrawReversibleFrame(lastRectangle, Color.White, FrameStyle.Thick);
    26 
    27             Rectangle rectangle = downRectangle;
    28             rectangle.Offset(e.X - downPoint.X, e.Y - downPoint.Y);
    29             ControlPaint.DrawReversibleFrame(rectangle, Color.White, FrameStyle.Thick);
    30 
    31             lastRectangle = rectangle;
    32         }
    33         private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    34         {
    35             if (e.Button != MouseButtons.Left) return;
    36 
    37             ControlPaint.DrawReversibleFrame(lastRectangle, Color.White, FrameStyle.Thick);
    38 
    39             pictureBox1.Location = new Point(
    40             ((Control)sender).Location.X + e.X - downPoint.X,
    41             ((Control)sender).Location.Y + e.Y - downPoint.Y);
    42         }

    4.程序源代码工程文件下载

    源代码工程文件下载

  • 相关阅读:
    面试题4:二维数组中查找
    面试题3:数组中重复的数字
    编程31:分别用递归和非递归的方式遍历二叉树
    编程17:判断一个列表是否是回文结构
    编程16:环形单链表的约瑟夫问题
    Sqli-labs less 55
    Sqli-labs less 56
    Sqli-labs less 57
    Sqli-labs less 58
    Sqli-labs less 59
  • 原文地址:https://www.cnblogs.com/JiYF/p/10112565.html
Copyright © 2011-2022 走看看