Windows窗体应用程序中的滑动效果

时间:2015-02-20 19:27:53

标签: c# .net winforms user-interface

如何让我的winforms c#app位于屏幕左侧?

我想要一个小标签显示,当我将鼠标光标移动到屏幕的那个区域时,它会显示在屏幕上。但当我最小化时,它会回到那个位置。

2 个答案:

答案 0 :(得分:2)

所以听起来你想让你的表格贴在电脑屏幕的一侧,然后当鼠标悬停发生时,它会扩展或做某事。

这是基于Microsoft here记录的形状窗口。

以下使用粘贴在屏幕侧面的矩形。对于我的MouseHover,我只是重新制作表单。您可能会显示第二个表单或执行一些动画。

将这些链接到表单的Load和MouseHover事件。 MouseEnter可能也会服务。

    private void Form1_Load(object sender, EventArgs e)
    {
        System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath();
        shape.AddRectangle(new Rectangle(8, 40, 200, 200));
        // I just picked a shape.  The user will see whatever exists in these pixels of the form.
        // After you get it going, make sure that things not on the visible area are disabled.  
        // A user can't click on them but they could tab to them and hit ENTER.
        // Give the user a way to close it other than Alt-F4, stuff like that.
        this.Region = new System.Drawing.Region(shape);
        this.Top = (Screen.PrimaryScreen.WorkingArea.Height - 160) / 2;
        this.Left = Screen.PrimaryScreen.WorkingArea.Left;
    }

    private void Form1_MouseHover(object sender, EventArgs e)
    {
        this.Region = new Region(new Rectangle(0, 0, this.Width, this.Height));
    }

答案 1 :(得分:2)

或者,如果您不想受形状限制,可以使用位图创建非标准窗口形状。但是使用这种技术,你的窗口仍然是正方形,这意味着如果人们点击不可见的部分,它就不会落到下面的窗口。为了照顾你,你必须制作一个自定义的形状...... borrow this guy's code

  • 您必须将主要表单的背景图片设置为图片。
  • 确保底角(右下角?)是您的"隐形颜色"
  • 将表单的BorderStyle属性设置为None。

我对这项技术的成功是一个看起来像咖啡杯的程序。你甚至可以点击手柄上的孔来获取它下面的东西。

    private void Form1_Load(object sender, EventArgs e)
    {
        this.TransparencyKey = new Bitmap(this.BackgroundImage).GetPixel(1, 1);
        this.Width = this.BackgroundImage.Width;
        this.Height = this.BackgroundImage.Height;
        this.Region = GetRegion(new Bitmap(this.BackgroundImage), this.TransparencyKey);
        // GetRegion fetched from referenced blog post
    }