流畅/直观地迭代Microsoft Word文档中的单词

本文关键字:文档 单词 Word Microsoft 直观 迭代 流畅 | 更新日期: 2023-09-27 18:31:45

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

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

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

当然,循环本身一点也不顺畅。对算法的任何建议。

流畅/直观地迭代Microsoft Word文档中的单词

动画有什么不流畅的?它正在制作精美的动画。:)做得很好

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

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

那么解决方案是什么?

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

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
   //
}