• 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.程序源代码工程文件下载

    源代码工程文件下载

  • 相关阅读:
    去除百度搜索结果中的广告的 js 代码
    js获取url参数
    奇淫技巧
    js生成hash序列
    Maven中可以被继承的POM元素
    多线程
    IO在Socket中的应用
    关于IO的整理
    finalize方法的使用
    复合赋值和简单复制的区别
  • 原文地址:https://www.cnblogs.com/JiYF/p/10112565.html
Copyright © 2020-2023  润新知