SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

フォームのズーム機能を持った.NETアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • このエントリーをはてなブックマークに追加

 「ComponentOne Studio 2013J」に含まれるSizer for WinFormsのC1SizerLightコンポーネントを使って、フォームを広げるとフォーム上のすべてのコントロールのサイズが比例して大きくなるWindowsフォームアプリケーションを作成してみます。

  • このエントリーをはてなブックマークに追加

はじめに

 日本の社会では高齢化が進んでいますが、中高年の悩みの一つに、視力の衰えが挙げられます。いわゆる老眼が進むことによって、小さな文字が見づらい場合があります。これに対応して新聞の字が大きくなったり、携帯電話やスマホに大きい文字の機種が増えるなど、高齢化への対応が見られますがまだまだ立ち遅れています。

 これはPCの画面にも言えることで、ブラウザなどは文字や表示を大きくすることができますが、表示文字サイズの変更が可能なアプリはごく少数で、小さなフォントのアプリケーションでは老眼鏡がないとよく見えないのが実情です。

 Sizer for WinFormsのC1SizerLightコンポーネントは、フォームを広げると自動的にフォーム上のコントロールのサイズを比例的に大きくしてくれるコンポーネントです。このコンポーネントなら、いちいちズーム設定などしなくても見やすいサイズにフォームを広げるだけで済みます。

 そこで今回は、このC1SizerLightコンポーネントを使った自動ズーム機能を持つアプリケーションを作成してみました。

通常、フォームを広げると余白だけが広がりフォーム上のコントロールに変化はない
通常、フォームを広げると余白だけが広がりフォーム上のコントロールに変化はない
C1SizerLightコンポーネントを使うと、フォームのサイズに比例して
フォーム上のコントロールとそのフォントが大きくなる
C1SizerLightコンポーネントを使うと、フォームのサイズに比例してフォーム上のコントロールとそのフォントが大きくなる
その逆にフォームとコントロールを小さくすることもできる
その逆にフォームとコントロールを小さくすることもできる

対象読者

 Visual Basic 2010/2012/2013、またはVisual C# 2010/2012/2013を使ってプログラムを作ったことがある人。

必要な環境

 Visual Basic 2010/2012/2013、Visual C# 2010/2012/2013、Visual Studio 2010/2012/2013でプログラムが作れる環境。

 なお、本プログラムは次の環境で開発・動作確認を行っています。

  • OS:Windows 7
  • 開発Tool:Visual Studio 2010、.NET Framework 4

プログラム実行時の注意事項

  本稿の実行ファイル(バイナリファイル)を動かすには、zipファイルに同梱してある以下のファイルが必要になります(.NET Framework 4でのみご使用いただけます)。

ファイル名 説明
C1.Win.C1Sizer.4.dll 本体アセンブリ

 このファイルを、実行プログラムと同じフォルダに格納します。

コンポーネントのインストール

 トライアル版は、グレープシティのWebページから申し込みできます。

 トライアル申込フォームが表示されますので、必要情報を入力して申し込むとトライアル版のダウンロード手順を記載したE-Mailが送られてきます。その手順にそってダウンロードを行ってください。また、ダウンロードファイルは圧縮ファイルになっていますので、解凍してインストーラを起動します。

 制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールと参照の追加

 ComponentOne Studio 2013Jをインストールしたら、プロジェクトにコントロールを追加します。

 ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコンポーネントは、アセンブリ名が「C1.Win.C1Sizer」の「C1SizerLight」コンポーネントです。

アセンブリ名が「C1.Win.C1Sizer」の「C1SizerLight」コンポーネントを選択する
アセンブリ名が「C1.Win.C1Sizer」の「C1SizerLight」コンポーネントを選択する

 これらのコントロールを追加すると、プロジェクトに以下のランタイムライブラリへの参照が追加されます。.NET Framework 4が必要です。

ファイル名 内容
C1.Win.C1Sizer.4 本体アセンブリ

 また、プロジェクトに以下のランタイムライブラリが追加されます。

ファイル名 内容
C1.Win.C1Sizer.4.dll 本体アセンブリ

C1SizerLightコンポーネントの概要

 C1SizerLightコンポーネントは非ビジュアルコンポーネントで、このコンポーネントをフォームに追加すると、フォームのサイズと位置が記録されます。フォームがサイズ変更された場合、C1SizerLightコンポーネントは、フォーム上のすべてのコントロールを同じ割合でサイズ変更するため、どの解像度でもフォームの外観が維持されます。

 また、C1SizerLightコンポーネントは、フォーム上の全部または一部のコントロールのフォントをサイズ変更することもできます。

 使い方はとても簡単で、C1SizerLightコンポーネントをフォームにドラッグ&ドロップするだけです。

 たったこれだけでプロジェクトにC1SizerLightコンポーネントが組み込まれ、フォームを拡大縮小するとフォーム上のすべてのコントロールがフォームのサイズに比例して拡大縮小されます。

 使用するプロパティは2つだけです。1つはC1SizerLightコンポーネントを有効にするEnabledプロパティで、もう2つはフォントのリサイズを有効にするResizeFontsプロパティです。いずれも設定値は論理値で、Trueで有効、Falseで無効になります。

GUIの作成(1)

 では、早速フォームのズーム機能を持ったアプリケーションを作成してみましょう。

 アプリケーションは、「ファイル」「編集」「表示」の3つのメニューとリッチテキストボックス、3つのボタンコントロールを配置します。

 C1SizerLightコンポーネントの効果はフォーム内に配置したコントロールが対象で、メニューは変化しません。その確認のためにメニューを組み込んでいますが、「表示」メニューにはズーム効果とフォント拡大機能の有効無効を切り替えられる「ズーム設定」と「フォント拡大」メニューコマンドを組み込んでいます。

 また、3つのボタンにアイコンを設定するためのImageListコントロールも使用しています。

フォームのレイアウト
フォームのレイアウト

フォームの作成

 今回のフォーム作成は、コントロールのレイアウトがほとんどです。というのも、C1SizerLightコンポーネントはプロジェクトに組み込むだけで自動的に拡大・縮小処理を実行してくれるからです。あとは、「ズーム設定」と「フォント拡大」メニューコマンドの処理を作成するだけです。

 ① フォームにMenuStripコントロールを配置し、以下のメニューを作成します。「ファイル」「編集」メニューは外観の設定だけで処理は組み込みません。

  • ファイル(&F)
  • 編集(&E)
  • 表示(&V)
    • ズーム設定
    • フォント拡大

 ② 「ズーム設定」と「フォント拡大」メニューコマンドは、「Checked」と「CheckOnClick」プロパティをTrueに設定します。これで、この2つのメニューはチェックボックス的な機能を持ちます。

 そして、処理を実行するためのClickイベントハンドラを作成しておきます。

「Checked」と「CheckOnClick」プロパティをTrueに設定
「Checked」と「CheckOnClick」プロパティをTrueに設定

 ③ フォームにRichTextBoxコントロールと3つのButtonコントロールを配置します。

 ④ ImageListコントロールを配置し、3つのアイコンイメージを組み込みます。そして、ButtonコントロールにそれぞれアイコンとTextプロパティを設定します。

コントロール Text アイコン
Button1 ファイルを開く... openfolderHS.png
Button2 文字色... ColorHS.png
Button3 フォント設定... FontDialogHS.png

 ⑤ フォームにC1SizerLightコンポーネントをドラッグ&ドロップします。

 以上でフォームのデザインは完成です。プロジェクトを実行し、フォームを拡大縮小させてみてください。フォームのサイズに追従して、リッチテキストボックスとボタンのサイズが変化すればOKです。

 なお、メニューはフォーム内にはないので、メニューのサイズは変わりません。

フォームのサイズに追従してリッチテキストボックスとボタンのサイズが変化すればOK
フォームのサイズに追従してリッチテキストボックスとボタンのサイズが変化すればOK

GUIの作成(2)

メニューコマンドの処理

 ここでは、「ズーム設定」と「フォント拡大」メニューコマンドの処理を作成します。

 まず、「ズーム設定」メニューコマンドは、チェックがオンになるとC1SizerLightコンポーネントを有効にします。これは、EnabledプロパティにTrueを設定します。チェックがオフになると無効にするのでFalseを設定します。また、「ズーム設定」が無効になると「フォント拡大」メニューコマンドは意味がなくなりますので、このメニューコマンドを無効にします。

 一方、「フォント拡大」メニューコマンドは、チェックがオンになるとC1SizerLightコンポーネントのResizeFontsプロパティにTrueを設定します。チェックがオフになるとFalseを設定します。

 これで、フォームのズームとフォント拡大機能の有効無効を切り替えます。

「ズーム設定」が無効になると「フォント拡大」を無効にする
「ズーム設定」が無効になると「フォント拡大」を無効にする
Visual Basic
Public Class Form1
    Private Sub ズーム設定ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ズーム設定ToolStripMenuItem.Click
        If ズーム設定ToolStripMenuItem.Checked = True Then
            C1SizerLight1.Enabled = True
            フォント拡大ToolStripMenuItem.Enabled = True
        Else
            C1SizerLight1.Enabled = False
            フォント拡大ToolStripMenuItem.Enabled = False
        End If
    End Sub

    Private Sub フォント拡大ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles フォント拡大ToolStripMenuItem.Click
        If フォント拡大ToolStripMenuItem.Checked = True Then
            C1SizerLight1.ResizeFonts = True
        Else
            C1SizerLight1.ResizeFonts = False
        End If
    End Sub
End Class
C#
namespace C1Sizer_Winform_cs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void ズーム設定ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (ズーム設定ToolStripMenuItem.Checked == true)
            {
                c1SizerLight1.Enabled = true;
                フォント拡大ToolStripMenuItem.Enabled = true;
            }
            else
            {
                c1SizerLight1.Enabled = false;
                フォント拡大ToolStripMenuItem.Enabled = false;
            }
        }

        private void フォント拡大ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (フォント拡大ToolStripMenuItem.Checked == true)
            {
                c1SizerLight1.ResizeFonts = true;
            }
            else
            {
                c1SizerLight1.ResizeFonts = false;
            }
        }
    }
}

まとめ

 C1SizerLightコンポーネントは、とにかくプロジェクトに配置するだけで何も設定せずに使用できるコンポーネントです。今回は1つのフォームだけにズーム効果を付け加えましたが、複数のフォームで使い分けるなど、アイデア次第で用途の幅が広がるコンポーネントだと思います。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7705 2014/03/26 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング