2015-04-21 192 views
0

写入PowerPoint插件时,我需要在幻灯片顶部的屏幕上绘制一些内容。 我可以绘制线条和图像,但几乎立即消失。幻灯片放映幻灯片中的PowerPoint插件写入

示例代码:

private void Application_SlideShowBegin(PowerPoint.SlideShowWindow Wn) 
{ 
    using (var g = Graphics.FromHwnd((IntPtr)Wn.HWND)) 
    { 
     g.DrawLine(new Pen(Color.Red, 10), new System.Drawing.Point(100, 100), new System.Drawing.Point(200, 300)); 
     Image img = Properties.Resources.img; 
     g.DrawImageUnscaled(img, new Rectangle(250, 250, img.Width, img.Height)); 
    } 
} 

任何想法,我怎能划线/图像在屏幕上?

回答

0

我应该早点看到它 - 这是关于刷新。该代码需要稍后运行,因此如果绘制延迟,绘图将停留在窗口上。 以下示例现在按预期工作:

private Timer _Ticker = new Timer(); 
private PowerPoint.SlideShowWindow _SlideshowWindow = null; 

private void Application_SlideShowBegin(PowerPoint.SlideShowWindow Wn) 
{ 
    _SlideshowWindow = Wn; 
    _Ticker.Interval = 30; 
    _Ticker.AutoReset = true; 
    _Ticker.Elapsed += Ticker_Elapsed; 
    _Ticker.Enabled = true; 
} 

    private void Ticker_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     if (_Ticker.Enabled) 
     { 
      using (var g = Graphics.FromHwnd((IntPtr)_SlideshowWindow.HWND)) 
      { 
       g.DrawLine(new Pen(Color.Red, 10), new System.Drawing.Point(100, 100), new System.Drawing.Point(200, 300)); 
       Image img = Properties.Resources.img; 
       g.DrawImageUnscaled(img, new Rectangle(250, 250, img.Width, img.Height)); 
      } 
      _Ticker.Enabled = false; 
      _Ticker.Elapsed -= Ticker_Elapsed; 
     } 
    }