c# - 在 Microsoft Word 文档中顺畅/直观地重复单词

标签 c# algorithm vba ms-word interop

我在 ActiveDocument.Characters 上有一个循环。

我已检索到文档区域的设备上下文句柄,并希望显示一个叠加层以从左到右逐行平滑地突出显示文本。

目标是实现流畅的动画效果,就像应用程序引导您以特定速度阅读一样。

当然,循环本身并不平滑。对算法的任何建议。

最佳答案

动画有什么不流畅的?它动画精美。干得好:)

如果您指的是下一个矩形的绘制方式,我相信(我可能是错的),这完全取决于 this.RenderSpeed。值越小,动画越平滑。在当前代码中,它在 this.RenderGuidePoint.Offset(1, 0); 处看起来最好,在 this.RenderGuidePoint.Offset(25, 0); 处看起来更差.

我不是图像专家,但这里有一个我能想到的例子(虽然不是最好的例子)。想象一下您正在观看的电影,这完全取决于帧速率。如果 fps 超过正常人眼可以处理的范围,您会注意到图像显得更加突兀(例如:当您使用 2 倍速或 4 倍速快进电影时)。同样,代码中的 .Offset() 越多,矩形的绘制看起来就越突兀。

那么解决方案是什么?

由于我们无法对正在绘制的下一个矩形的“X”执行太多操作,因此我们可以操纵 Timer 的时间间隔以实现更流畅的创建(矩形的重绘)。 出于测试目的,我对一些值进行了硬编码,并对输出感到满意。看看您是否也得到了我得到的结果。

private void ToolStripComboBoxSpeed_SelectedIndexChanged (object sender, System.EventArgs e)
{
    this.RenderSpeed = (int) this.ToolStripComboBoxSpeed.SelectedItem;

    Switch (this.RenderSpeed)
    {
        case 5: TimerGuide.Interval = 50; break;
        case 10: TimerGuide.Interval = 40; break;
        case 15: TimerGuide.Interval = 30; break;
        case 20: TimerGuide.Interval = 20; break;
        case 25: TimerGuide.Interval = 10; break;
    }
}


private void PictureBox_Paint (object sender, System.Windows.Forms.PaintEventArgs e)
{
   //
   // '~~> Rest of the code remains same
   //

   //this.RenderGuidePoint.Offset(this.RenderSpeed, 0);
   this.RenderGuidePoint.Offset(1, 0);

   //
   // '~~> Rest of the code remains same
   //
}

HTH

关于c# - 在 Microsoft Word 文档中顺畅/直观地重复单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231808/

相关文章:

excel - 在 Windows 7 上打开 PowerPoint 演示文稿时 VBA 失败

vba - 复制行时是否存在工作表错误处理

c# - 在 Windows 中使用 C# 配置扬声器设置有哪些 API?

c# - 在 C# 中使用排他锁创建 SQLite 数据库

c# - 在Windows服务中使用计时器

algorithm - N-gram文本分类类别大小差异补偿

performance - 分析下面for循环的时间复杂度

c# - 按后续负数的数量对数组的(先前)元素进行分组

excel - Outlook 中的 VBA 将特定数据提取到 excel 中

c# - 为什么 GC 会将对象放入终结队列?