• C#中Invalidate() 方法


    Control.Invalidate 方法

     

    使控件的特定区域无效并向控件发送绘制消息。

    重载列表

    使控件的特定区域无效并向控件发送绘制消息。

    受 .NET Framework 精简版的支持。

    [C#] public void Invalidate();
    [C++] public: void Invalidate();

    使控件的特定区域无效并向控件发送绘制消息。还可以使分配给该控件的子控件无效。

    [C#] public void Invalidate(bool);

    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。

    受 .NET Framework 精简版的支持。

    [C#] public void Invalidate(Rectangle);

    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。

    [C#] public void Invalidate(Region);

    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。还可以使分配给该控件的子控件无效。

    [C#] public void Invalidate(Rectangle, bool);

    使控件的指定区域无效(将其添加到控件的更新区域,下次绘制操作时将重新绘制更新区域),并向控件发送绘制消息。还可以使分配给该控件的子控件无效。

    [C#] public void Invalidate(Region, bool);

    示例

    [Visual Basic, C#, C++] 下面的示例使用户能够将图像或图像文件拖到窗体上,并使它在放置点显示。每次绘制窗体时,都重写 OnPaint 方法以重新绘制图像;否则图像将保持到下一次重新绘制。DragEnter 事件处理方法决定拖到窗体中的数据的类型,并提供适当的反馈。如果 Image 可以从该数据中创建,则 DragDrop 事件处理方法就会在该窗体上显示此图像。因为 DragEventArgs.X 和 DragEventArgs.Y 值为屏幕坐标,所以示例使用 PointToClient 方法将它们转换成工作区坐标。

    [C#] 
    private Image picture;
    private Point pictureLocation;

    public Form1()
    {
       // Enable drag-and-drop operations and 
       // add handlers for DragEnter and DragDrop.
       this.AllowDrop = true;
       this.DragDrop += new DragEventHandler(this.Form1_DragDrop);
       this.DragEnter += new DragEventHandler(this.Form1_DragEnter);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
       // If there is an image and it has a location, 
       // paint it when the Form is repainted.
       base.OnPaint(e);
       if(this.picture != null && this.pictureLocation != Point.Empty)
       {
          e.Graphics.DrawImage(this.picture, this.pictureLocation);
       }
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
       // Handle FileDrop data.
       if(e.Data.GetDataPresent(DataFormats.FileDrop) )
       {
          // Assign the file names to a string array, in 
          // case the user has selected multiple files.
          string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
          try
          {
             // Assign the first image to the picture variable.
             this.picture = Image.FromFile(files[0]);
             // Set the picture location equal to the drop point.
             this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
          }
          catch(Exception ex)
          {
             MessageBox.Show(ex.Message);
             return;
          }
       }

       // Handle Bitmap data.
       if(e.Data.GetDataPresent(DataFormats.Bitmap) )
       {
          try
          {
             // Create an Image and assign it to the picture variable.
             this.picture = (Image)e.Data.GetData(DataFormats.Bitmap);
             // Set the picture location equal to the drop point.
             this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
          }
          catch(Exception ex)
          {
             MessageBox.Show(ex.Message);
             return;
          }
       }
       // Force the form to be redrawn with the image.
       this.Invalidate();
    }

    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
       // If the data is a file or a bitmap, display the copy cursor.
       if (e.Data.GetDataPresent(DataFormats.Bitmap) || 
          e.Data.GetDataPresent(DataFormats.FileDrop) ) 
       {
          e.Effect = DragDropEffects.Copy;
       }
       else
       {
          e.Effect = DragDropEffects.None;
       }
    }
  • 相关阅读:
    Ajax 传递json字符串到客户端时报 Internal server error
    Java 判断字符串的存储长度
    5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
    databales详解(一)
    JQuery总结
    《JavaScript 高级程序设计》总结
    ASP.NET MVC中controller和view相互传值的方式
    Jquery tmpl详解
    @section script{}的使用
    messager(消息窗口)
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2645946.html
Copyright © 2020-2023  润新知