Form1では、デザイナーにlabel2があり、コードを追加しました。
public void lbl2(string text)
{
label2.Text = text;
}
新しいクラストップに私は追加しました:
private static AnimationEditor.Form1 fr1 = new AnimationEditor.Form1();
そして、新しいクラスイベントでは、次のようにlabel2.Textを更新しています。
int ISampleGrabberCB.BufferCB(double sampleTime, IntPtr pBuffer, int bufferLen)
{
using (var bitmap = new Bitmap(_width, _height, _width * 3, PixelFormat.Format24bppRgb, pBuffer))
{
bitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
if (SaveToDisc)
{
String tempFile = _outFolder + _frameId + ".bmp";
if (File.Exists(tempFile))
{
fr1.lbl2(_frameId.ToString();
}
else
{
bitmap.Save(Path.Combine(_outFolder, _frameId + ".bmp"));
}
_frameId++;
}
else
{
if (Images == null)
Images = new List<Bitmap>();
Images.Add((Bitmap)bitmap.Clone());
}
}
return 0;
}
更新を行っているのは次のとおりです。
fr1.lbl2(_frameId.ToString();
ここで、新しいクラスのこの行と、パブリック関数のlabel2.TextのForm1でブレークポイントを使用しました。ラベル2のテキストが、最初に0、次に1、次に2というように変化していることがわかりました。
しかし実際には、アプリケーションを実行しているときにリアルタイムでlabel2は、label2のようにテキストが常に変化します。
これは、Form1ボタンクリックイベントであり、クリックすると新しいクラスコードが実行されます。
private void button5_Click(object sender, EventArgs e)
{
wmv = new Polkan.DataSource.WmvAdapter(@"d:\VIDEO0040.3gp", sf);
wmv.SaveToDisc = true;
wmv.Start();
wmv.WaitUntilDone();
}