簡體   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