【发布时间】:2014-01-19 02:17:33
【问题描述】:
在我用 C# 编写的 winforms 应用程序中,我需要同步放置在 2 个图片框上的 2 个 GIF 图像的时间。这意味着,一个图片框有一个动画 GIF 图像,第二个图片框有相同的动画 GIF 图像,但颜色不同。当第二个图片框出现时,两个图像必须以相同的帧序列显示。
基于 King King 在this thread 中的回答,我实现了这个扩展方法:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void _buttonTest_Click(object sender, EventArgs e)
{
_pictureBox2.Visible = !_pictureBox2.Visible;
if (_pictureBox2.Visible)
_pictureBox2.SynchronizeWith(_pictureBox1);
}
}
public static class PictureBoxServices
{
public static void SetPictureFrameIndex(this PictureBox pictureBox, int index)
{
pictureBox.Image.SelectActiveFrame(new FrameDimension(pictureBox.Image.FrameDimensionsList[0]), index);
pictureBox.Image = pictureBox.Image; // restart on selected index
}
public static int GetPictureFrameIndex(this PictureBox pictureBox)
{
throw new NotImplementedException();
}
public static void SynchronizeWith(this PictureBox pictureBoxThis, PictureBox pictureBoxToSynchronizeWith)
{
pictureBoxThis.SetPictureFrameIndex(pictureBoxToSynchronizeWith.GetPictureFrameIndex());
}
}
我有两个问题:
- 不知道如何实现GetPictureFrameIndex
- SetPictureFrameIndex 不起作用。它设置并显示选定的帧,但下一个显示的帧始终是 frameindex = 1,而不是 frameindex = index + 1
有人可以帮帮我吗? 即使是使用反射的破解解决方案也可以(如果需要使用反射)。
【问题讨论】:
标签: c# .net winforms user-interface reflection