Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<ol> <li><p>Create a WPF window that is transparent and topmost (EDIT: do not maximize window)</p> <pre><code>&lt;Window ... Background="#00000000" Topmost="True" ShowInTaskbar="False" WindowStyle="None" AllowsTransparency="True" ResizeMode="NoResize"&gt; </code></pre></li> <li><p>(NEW) Use GetWindowRect to get the location and size of the slide show window</p> <pre><code>[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); [StructLayout(LayoutKind.Sequential)] private struct RECT { public int Left; public int Top; public int Right; public int Bottom; } </code></pre></li> <li><p>Place the transparent window over the PowerPoint slideshow window</p> <pre><code>settings = presentation.SlideShowSettings; slideshowWindow = settings.Run(); RECT rect = new RECT(); GetWindowRect(new IntPtr(slideshowWindow.HWND), ref rect); overlayWindow.Left = rect.Left; // EDIT: do not use slideshowWindow.Left, etc. overlayWindow.Top = rect.Top; overlayWindow.Width = rect.Width; overlayWindow.Height = rect.Height; </code></pre></li> <li><p>Put a Canvas into the WPF window and add Polyline objects to it as needed. Text marker lines could be like this:</p> <pre><code>line = new Polyline { Opacity = 0.8, Stroke = new SolidColorBrush(Colors.Yellow), StrokeThickness = 20 }; this.canvas.Children.Add(line); </code></pre> <p>Add points to line.Points as needed. Call <code>this.canvas.Children.Clear()</code> to clear all your drawings.</p></li> </ol> <p>It's a workaround but I'd say your best shot.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload