gpt4 book ai didi

c# - 使用 PowerPoint 2010 互操作的笔和记号笔

转载 作者:太空狗 更新时间:2023-10-29 20:28:41 25 4
gpt4 key购买 nike

我是 PowerPoint 互操作的新手,我正在尝试在演示模式下绘制红笔黄色文本标记(不是形状!!!)线条。

更新:

我可以这样画一条线:

settings = presentation.SlideShowSettings; 
window = settings.Run();
window.View.DrawLine(startX, startY, endX, endY);

但线总是又黑又细。如何为其选择红色笔或黄色文本标记?

除了 DrawLine 方法,我可以通过设置为用户选择笔(鼠标光标变成笔而不是箭头):

window.View.PointerType = PpSlideShowPointerType.ppSlideShowPointerPen;
window.View.PointerColor.RGB = 255;

但是我怎样才能将它设置为文本标记呢?黄色将是 65535,如何获得文本标记样式(更大的笔、透明度)而不是细小的实心笔?

最佳答案

  1. 创建一个透明且最顶层的 WPF 窗口(编辑:不要最大化窗口)

    <Window ... Background="#00000000" Topmost="True" ShowInTaskbar="False" WindowStyle="None" AllowsTransparency="True" ResizeMode="NoResize">
  2. (新)使用 GetWindowRect 获取幻灯片放映窗口的位置和大小

    [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;
    }
  3. 将透明窗口放在 PowerPoint 幻灯片窗口上

    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;
  4. 将 Canvas 放入 WPF 窗口中,并根据需要向其中添加 Polyline 对象。文本标记线可能是这样的:

    line = new Polyline
    {
    Opacity = 0.8,
    Stroke = new SolidColorBrush(Colors.Yellow),
    StrokeThickness = 20
    };
    this.canvas.Children.Add(line);

    根据需要向 line.Points 添加点。调用 this.canvas.Children.Clear() 清除所有绘图。

这是一种解决方法,但我会说你最好的选择。

关于c# - 使用 PowerPoint 2010 互操作的笔和记号笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7851222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com