在编写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 :(得分: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;
}
}