[C#][Windows Formsアプリ][RichTextBox] ZoomFactorプロパティで表示倍率を変更する

スポンサーリンク

はじめに

文書の「見やすさ」は編集効率に直結します。
ZoomFactor は、RichTextBox に表示されるテキストの“表示倍率(ズーム)”
プログラムから変更できるプロパティです。本文はそのまま、見た目の拡大・縮小だけを行います。

 

ZoomFactorプロパティとは?

ZoomFactor単精度浮動小数float)で、
1.0 = 100% を基準に、0.5 = 50%2.0 = 200% のように倍率を指定します。

ポイント
・ズームは表示だけに影響します。Text / Rtf に保存される内容(フォントサイズ等)は変わりません。
・一般的に最小はおよそ 0.1(10%)、最大はおよそ 64(6400%) 付近で動作します(環境により若干の差異あり)。

 

基本の使い方

固定倍率を設定する

// 150% に拡大
richTextBox1.ZoomFactor = 1.5f;

// 元の倍率(100%)に戻す
richTextBox1.ZoomFactor = 1.0f;

段階的に拡大・縮小する

private void ZoomIn(float step = 0.1f)
{
    float next = MathF.Min(richTextBox1.ZoomFactor + step, 64.0f);
    richTextBox1.ZoomFactor = next;
}

private void ZoomOut(float step = 0.1f)
{
    float next = MathF.Max(richTextBox1.ZoomFactor - step, 0.1f);
    richTextBox1.ZoomFactor = next;
}

実用例:ズームイン/ズームアウト・リセットボタン

using System;
using System.Windows.Forms;

namespace RichTextBoxZoomSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            richTextBox1.Text = "ZoomFactorで表示倍率を変更できます。\r\n100% を基準に拡大・縮小します。";
            UpdateStatus();
        }

        private void btnZoomIn_Click(object sender, EventArgs e)
        {
            richTextBox1.ZoomFactor = Math.Min(richTextBox1.ZoomFactor + 0.2f, 64.0f);
            UpdateStatus();
        }

        private void btnZoomOut_Click(object sender, EventArgs e)
        {
            richTextBox1.ZoomFactor = Math.Max(richTextBox1.ZoomFactor - 0.2f, 0.1f);
            UpdateStatus();
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            richTextBox1.ZoomFactor = 1.0f; // 100%
            UpdateStatus();
        }

        private void UpdateStatus()
        {
            lblZoom.Text = $"倍率: {(int)(richTextBox1.ZoomFactor * 100)}%";
        }
    }
}

ショートカットを割り当てるなら、Ctrl + +(拡大)、Ctrl + -(縮小)、Ctrl + 0(リセット)などが定番です。

 

実用例:トラックバー(スライダー)で連動

// フォーム初期化時
trackBarZoom.Minimum = 10;   // 10%
trackBarZoom.Maximum = 400;  // 400% など任意
trackBarZoom.Value   = 100;  // 既定 100%
trackBarZoom.TickFrequency = 10;

trackBarZoom.ValueChanged += (s, e) =>
{
    richTextBox1.ZoomFactor = trackBarZoom.Value / 100f;
    lblZoom.Text = $"倍率: {trackBarZoom.Value}%";
};

UI と倍率が視覚的に連動するため、ユーザーにとって扱いやすい実装です。

 

よくある疑問と落とし穴

Q. フォントサイズは変わる? いいえ。表示倍率だけが変わります。Rtf に保存されるフォントサイズはそのままです。
Q. 折り返しやスクロールは? WordWrapScrollBars の動作はそのまま。ズームにより見かけの行数・スクロール量は変わります。
Q. すごく大きく(小さく)すると重い 極端な倍率は描画負荷が上がります。上限・下限をアプリ側でクリップしましょう(例:10%〜400%)。
Q. 既定値は? 1.0f(100%)です。リセット時はこれを設定します。

 

実装チェックリスト

  • 上限・下限を決めて クリップ(例:0.1f4.0f
  • 現在倍率を UI に表示(ラベルやステータスバー)
  • ショートカットキーの割り当て(Ctrl + +/-/0
  • ユーザー設定として保存するなら、アプリ設定(Properties.Settings など)へ永続化

 

まとめ

  • ZoomFactor表示倍率 を制御するプロパティ(内容は不変)
  • 100% は 1.0f。UI 操作(ボタン/スライダー/ショートカット)に簡単に連動できる
  • 実装時は上限・下限のクリップと現在倍率の可視化が使い勝手を左右する
Please follow and like us:

コメント

タイトルとURLをコピーしました