繁体   English   中英

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

[英]Smoothly / visually iterate words in Microsoft Word documents

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

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

目的是获得流畅的动画效果,就像应用程序正在指导您以一定速度阅读一样。

当然,循环本身根本不是平滑的。 关于算法的任何建议。

动画不太流畅吗? 动画精美。 干得好:)

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

我不是图像专家,但是这里有一个我可以想到的示例(尽管不是最好的示例)。 想象一下您正在观看的电影,这完全取决于帧频。 如果fps超出正常人眼所能承受的范围,则您会注意到图像显得更突兀( 例如:使用2倍速或4倍速快进影片时 )。 同样,您在代码中输入的.Offset()越多,矩形的绘制就会越突然。

那么解决方案是什么?

由于我们不能在要绘制的下一个矩形的“ X”上做很多事情,因此我们可以操纵Timer的时间间隔以更平滑地创建( 重绘Rectangle )。 为了进行测试,我对一些值进行了硬编码,并对输出感到满意。 看看您是否也得到了我得到的结果。

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

高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM