gpt4 book ai didi

c# - 如何在 C# 中向我的控件添加 move 效果?

转载 作者:可可西里 更新时间:2023-11-01 03:11:34 26 4
gpt4 key购买 nike

我的 C# 窗体中有一个面板,并且有一个按钮。当我点击按钮时,不可见的面板显示。相反,我希望面板 move 或滑入。例如,当您单击组合框时,下拉列表不会弹出。我希望我的面板看起来像那样。我该怎么做?

最佳答案

窗口动画是 Windows 的一项内置功能。这是一个使用它的类:

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public static class Util {
public enum Effect { Roll, Slide, Center, Blend }

public static void Animate(Control ctl, Effect effect, int msec, int angle) {
int flags = effmap[(int)effect];
if (ctl.Visible) { flags |= 0x10000; angle += 180; }
else {
if (ctl.TopLevelControl == ctl) flags |= 0x20000;
else if (effect == Effect.Blend) throw new ArgumentException();
}
flags |= dirmap[(angle % 360) / 45];
bool ok = AnimateWindow(ctl.Handle, msec, flags);
if (!ok) throw new Exception("Animation failed");
ctl.Visible = !ctl.Visible;
}

private static int[] dirmap = { 1, 5, 4, 6, 2, 10, 8, 9 };
private static int[] effmap = { 0, 0x40000, 0x10, 0x80000 };

[DllImport("user32.dll")]
private static extern bool AnimateWindow(IntPtr handle, int msec, int flags);
}

示例用法:

    private void button2_Click(object sender, EventArgs e) {
Util.Animate(button1, Util.Effect.Slide, 150, 180);
}

关于c# - 如何在 C# 中向我的控件添加 move 效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com