gpt4 book ai didi

c# - 使用 C# 形式的动画 Gif

转载 作者:太空狗 更新时间:2023-10-29 23:04:04 27 4
gpt4 key购买 nike

在我的项目中,每当执行一个较长的过程时,就会显示一个带有小动画 gif 文件的小表单。我使用 this.Show() 打开表单,使用 this.Close() 关闭表单。以下是我使用的代码。

public partial class PlzWaitMessage : Form
{
public PlzWaitMessage()
{
InitializeComponent();
}

public void ShowSpalshSceen()
{
this.Show();
Application.DoEvents();
}

public void CloseSpalshScreen()
{
this.Close();
}
}

当表单打开时,图像文件不会立即开始动画。当它做动画时,这个过程通常已经完成或非常接近完成,这使得动画变得无用。有没有一种方法可以让 gif 在我加载表单后立即动画化?

最佳答案

为什么不使用线程?学习新东西总是好主意。

您可以简单地将您的“长进程”放在后台线程中,并使用事件向表示层报告,例如:

// in your "long process" class
public event Action<double> ReportCompletition;

// this method will start long process in separate background thread
public void Start()
{
Thread thread = new Thread(this.LongProcess);
thread.IsBackground = true;
thread.Start();
}

private void LongProcess()
{
// do something
// report 10% completition by raising event
this.ReportCompletition(0.1);
// do something more
this.ReportCompletition(0.5);
// ... and so on
}

这样,您所要做的就是在您的表单/用户界面中实现简单的方法,该方法将使用这些信息。

public partial class MainApplicationWindow : Form
{
private LongProcessClass _longProcess;

public MainApplicationWindow
{
this.InitializeComponent();
this._longProcess = new LongProcessClass();
// bind UI updating method to long process class event
this._longProcess.ReportCompletition += this.DisplayCompletitionInfo;
}

private void DisplayCompletitionInfo(double completition)
{
// check if control you want to display info in needs to be invoked
// - request is coming from different thread
if (control.InvokeRequired)
{
Action<double> updateMethod = this.DisplayCompletitionInfo;
control.Invoke(updateMethod, new object[] { completition });
}
// here you put code to do actual UI updating,
// eg. displaying status message
else
{
int progress = (int) completition * 10;
control.Text = "Please wait. Long process progress: "
+ progress.ToString() + "%";
}
}

当然,您可以在漫长的过程中报告您喜欢的任何内容。无论是完成率,准备好显示字符串消息,任何东西。您还可以使用事件来报告长流程已完成、中断或任何您想要的长流程数据。

有关此主题的更多详细信息,您可能需要在 Threading 上查看 MSDN 教程和 Events .

关于c# - 使用 C# 形式的动画 Gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3068727/

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