はじめに
日本の社会では高齢化が進んでいますが、中高年の悩みの一つに、視力の衰えが挙げられます。いわゆる老眼が進むことによって、小さな文字が見づらい場合があります。これに対応して新聞の字が大きくなったり、携帯電話やスマホに大きい文字の機種が増えるなど、高齢化への対応が見られますがまだまだ立ち遅れています。
これはPCの画面にも言えることで、ブラウザなどは文字や表示を大きくすることができますが、表示文字サイズの変更が可能なアプリはごく少数で、小さなフォントのアプリケーションでは老眼鏡がないとよく見えないのが実情です。
Sizer for WinFormsの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」コンポーネントです。
これらのコントロールを追加すると、プロジェクトに以下のランタイムライブラリへの参照が追加されます。.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イベントハンドラを作成しておきます。
③ フォームにRichTextBoxコントロールと3つのButtonコントロールを配置します。
④ ImageListコントロールを配置し、3つのアイコンイメージを組み込みます。そして、ButtonコントロールにそれぞれアイコンとTextプロパティを設定します。
コントロール | Text | アイコン |
---|---|---|
Button1 | ファイルを開く... | openfolderHS.png |
Button2 | 文字色... | ColorHS.png |
Button3 | フォント設定... | FontDialogHS.png |
⑤ フォームにC1SizerLightコンポーネントをドラッグ&ドロップします。
以上でフォームのデザインは完成です。プロジェクトを実行し、フォームを拡大縮小させてみてください。フォームのサイズに追従して、リッチテキストボックスとボタンのサイズが変化すればOKです。
なお、メニューはフォーム内にはないので、メニューのサイズは変わりません。
GUIの作成(2)
メニューコマンドの処理
ここでは、「ズーム設定」と「フォント拡大」メニューコマンドの処理を作成します。
まず、「ズーム設定」メニューコマンドは、チェックがオンになるとC1SizerLightコンポーネントを有効にします。これは、EnabledプロパティにTrueを設定します。チェックがオフになると無効にするのでFalseを設定します。また、「ズーム設定」が無効になると「フォント拡大」メニューコマンドは意味がなくなりますので、このメニューコマンドを無効にします。
一方、「フォント拡大」メニューコマンドは、チェックがオンになるとC1SizerLightコンポーネントのResizeFontsプロパティにTrueを設定します。チェックがオフになるとFalseを設定します。
これで、フォームのズームとフォント拡大機能の有効無効を切り替えます。
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
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つのフォームだけにズーム効果を付け加えましたが、複数のフォームで使い分けるなど、アイデア次第で用途の幅が広がるコンポーネントだと思います。