2010-01-20 136 views

回答

1

我一直在使用RenderTargetBitmap对象来呈现这样的动画图像序列:

首先你拨打:

myStoryboard.CurrentTimeInvalidated += new EventHandler(onCurrentTimeInvalidated); 

其中myStoryboard是故事板驱动的动画,然后你有以下方法:

void onCurrentTimeInvalidated (object sender, EventArgs e) 
     { 
      prefix = ""; 
      if (counter < 10) 
      { 
       prefix = "000"; 
      } 
      else if (counter < 100) 
      { 
       prefix = "00"; 
      } 
      else if (counter < 1000) 
      { 
       prefix = "0"; 
      } 

      Size size = new Size(MainCanvas.ActualWidth, MainCanvas.ActualHeight); 
      MainCanvas.Measure(size); 
      MainCanvas.Arrange(new Rect(size)); 


      RenderTargetBitmap bmp = new RenderTargetBitmap(imgWidth, imgHeight, 96d, 96d, PixelFormats.Default); 
      bmp.Render(MainCanvas); 

      JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
      encoder.QualityLevel = 90; 
      encoder.Frames.Add(BitmapFrame.Create(bmp)); 
      string file = basePath + prefix + counter.ToString() + "_testpic.jpg"; 
      using (Stream stm = File.Create(file)) 
      { 
       encoder.Save(stm); 
      } 
      counter++; 
     } 

我不确定这将如何与MediaElement一起工作,但它可能值得一试。尽管您需要从MediaTimeline中驱动MediaElement,并从它的CurrentTimeInvalidated事件中调用onCurrentTimeInvalidated方法,但为此可以在MediaElement上工作。