Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 平滑/直观地迭代Microsoft Word文档中的单词_C#_Algorithm_Vba_Ms Word_Interop - Fatal编程技术网

C# 平滑/直观地迭代Microsoft Word文档中的单词

C# 平滑/直观地迭代Microsoft Word文档中的单词,c#,algorithm,vba,ms-word,interop,C#,Algorithm,Vba,Ms Word,Interop,我在ActiveDocument.Characters上有一个循环 我已检索到文档区域的设备上下文句柄,并希望显示一个覆盖,以便从左到右逐行平滑地高亮显示文本 其目标是实现平滑动画,就像应用程序引导您以特定速度阅读一样 当然,循环本身并不平滑。对算法有什么建议。动画有什么不太流畅的地方?它的动画效果很好。干得好:) 如果您指的是下一个矩形的绘制方式,我相信(我可能错了),这完全取决于这个.RenderSpeed。该值越小,动画效果就越平滑。在当前代码中,最好是this.RenderGuidePo

我在ActiveDocument.Characters上有一个循环

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

其目标是实现平滑动画,就像应用程序引导您以特定速度阅读一样


当然,循环本身并不平滑。对算法有什么建议。

动画有什么不太流畅的地方?它的动画效果很好。干得好:)

如果您指的是下一个矩形的绘制方式,我相信(我可能错了),这完全取决于
这个.RenderSpeed
。该值越小,动画效果就越平滑。在当前代码中,最好是
this.RenderGuidePoint.Offset(1,0)这个.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
   //
}

HTH

动画有什么不太流畅的地方?它的动画效果很好。干得好:)

如果您指的是下一个矩形的绘制方式,我相信(我可能错了),这完全取决于
这个.RenderSpeed
。该值越小,动画效果就越平滑。在当前代码中,最好是
this.RenderGuidePoint.Offset(1,0)这个.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
   //
}

HTH

循环有什么不顺畅?你能给我们看看你的代码吗?@DanielHilgarth:Lol。。。循环工作正常。。。我正在尝试制作一个视觉叠加动画作为阅读指南。我将很快上传一个我写的C#示例以供参考。@SiddharthRout:我的代码到处都是。我将很快上传一个C#示例来说明所需的效果。@RaheelKhan:听起来不错。顺便说一句,这是一个VSTO插件还是一个简单的C#Word自动化?循环有什么不顺畅的地方?你能给我们看看你的代码吗?@DanielHilgarth:Lol。。。循环工作正常。。。我正在尝试制作一个视觉叠加动画作为阅读指南。我将很快上传一个我写的C#示例以供参考。@SiddharthRout:我的代码到处都是。我将很快上传一个C#示例来说明所需的效果。@RaheelKhan:听起来不错。顺便说一句,这是一个VSTO插件还是一个简单的C#Word自动化?谢谢你的努力。(1) 上传的解决方案是非常粗糙的代码,因为它是为了一个快速的原型。(2) 该解决方案仅表示所需的效果。实际上,我想从Microsoft Word导入此文本,同时保留格式,格式可能因字符而异,从而影响字符位置和尺寸。(3) 接下来的评论。(3)你加速这个应用程序的解决方案更符合逻辑,但在现实世界中不起作用,因为计时器组件不能保证高分辨率(FPS)。即使我使用了一个更原生的Win32定时器,WinForms刷新率很可能仍然会限制足够平滑的转换。双重缓冲可能是一个解决方案,但我需要进一步研究。关于你的第2点:这正是我在说<代码>时的意思,因为我们不能对…的“X”做太多。
你的代码已经根据字符的格式计算了它。另一种方法是将您的下拉列表从
5-25
更改为
1X-5X
,并在速度方面工作。。。就我的两个世纪你能洞察到每个角色的确切位置和尺寸吗?当然,我必须使用RichTextBox控件并在其上绘制,而不是渲染到图片框,上传的解决方案就是这样做的。谢谢您的努力。(1) 上传的解决方案是非常粗糙的代码,因为它是为了一个快速的原型。(2) 该解决方案仅表示所需的效果。实际上,我想从Microsoft Word导入此文本,同时保留格式,格式可能因字符而异,从而影响字符位置和尺寸。(3) 接下来的评论。(3)你加速这个应用程序的解决方案更符合逻辑,但在现实世界中不起作用,因为计时器组件不能保证高分辨率(FPS)。即使我使用了一个更原生的Win32定时器,WinForms刷新率很可能仍然会限制足够平滑的转换。双重抛光可以是