1

私のwinformFormには、TextBoxCtrl + MouseWheelズームを実装したコントロールがあり、チャームのように機能します。

ただし、特定のフォントサイズ以降では、フォントのスケーリングにかかる​​時間が長くなり、完了/レンダリングに時間がかかることに気付きました。

なぜこれが起こっているのか、そしてこれを回避する方法があるかどうか(最大ズーム率を制限することは別として)誰かに教えてもらえますか?

関連性があるとは思えませんが、これを引き起こしている場合に備えて、コードを含めます。

void xmlForm_MouseWheel(object sender, MouseEventArgs e)
{
    if (Control.ModifierKeys == Keys.Control)
    {
        if (((Form)sender).Controls[0].Font.Size + (e.Delta / 120) > 1 && ((Form)sender).Controls[0].Font.Size + (e.Delta / 120) < Single.MaxValue)
        {
            Font newFont = new Font(((Form)sender).Controls[0].Font.FontFamily, ((Form)sender).Controls[0].Font.Size + (e.Delta / 120));
            ((Form)sender).Controls[0].Font = newFont;
        }
    }
}

少し早いですがお礼を。

4

1 に答える 1

2

推測を答えに変える:WordWrapプロパティがTrueに設定されています。ワードラップは一般にかなりコストのかかる操作です。コントロールは文字列の測定を開始して、テキスト行をラップする必要がある場所を確認する必要があります。WordWrapがfalseの場合は、何もする必要はありません。

フォントを大きくすると、ウィンドウ全体に収まるテキストが少なくなるため、より多くの測定を行う必要があります。それはそれを遅くします、あなたがコントロールにたくさんのテキストを持っているとき、それは目に目立ちます。ペイントを開始する場所や垂直スクロールバーを初期化する方法などの単純なことは複雑になります。Format + Word Wrapを使用すると、メモ帳でも非常に目立ちます。これをオンにすると、大きな.txtファイルをロードすると、プログラムがしばらく停止します。

于 2012-12-21T14:02:17.490 に答える