タブレットPC開発入門 C#編 第11回 お待ちかね!タブレット

このページをDeliciousに追加 このページをはてなブックマークに追加 このページをYahoo!ブックマークに追加

2002年11月14日(木)版

タブレットPC開発入門 C#編 第11回 お待ちかね!タブレット

デスクトップ、ノートブックから、第3のスタイルへ


■お待ちかねのタブレット

 いよいよこの連載の目玉でもあるタブレットPCらしいものに挑戦する。ただし、今回は多少難易度がアップするので心して読み進んで欲しい。

■InkCollector

 この連載の第1回で"Ink Collection"サンプルを実行して、Formに絵や文字を描いてみたと思うが、これの基本部分を作成しながら解説する。タブレットPCでインクの機能を使うにはにはInkCollectorオブジェクトを使用する。InkCollectorオブジェクトはコントロールと違って、new演算子でインスタンスを作成する必要があるので、多少煩雑さを感じるかもしれない。

 インスタンスとはその設計図であるクラスに基づいて作成される実体のことである。通常、クラスはインスタンスを作成し、オブジェクト変数にその参照を格納する。インスタンスを作成すると言っても何のことはない、new演算子を用いて以下のように記述するだけの話である。

myClass myClassInstance = new myClass();

 今回はやることが少し多いので最初に挙げておく。

 1.Microsoft.Inkへの参照設定
 2.InkCollectorオブジェクト変数の宣言
 3.InkCollectorインスタンス作成
 4.InkCollectorインスタンスを操作する

 しかしながら、ほんの数行のコードを書くだけでお絵描きソフトが作れてしまうのだから素晴らしい。その昔、8ビットパソコン用のBASICで1ドットずつPSETして遊んでいた頃とは天地の差がある。

■Microsoft.Inkへの参照設定

 新たに「Windows アプリケーション」を作成する。プロジェクト名は"InkTest"あたりで良いだろう。InkCollectorを使用するには、まずMicrosoft.Inkへの参照設定が必要となる。ソリューションエクスプローラで参照設定を右クリックし、「参照の追加」メニューを選択する。

「参照の追加」ダイアログが表示されるので、「Microsoft Tablet PC API」を選択し「選択」ボタンを押して「選択されたコンポーネント」リストビューに表示させる。

 ここでOKボタンを押すとMicrosoft.Inkへの参照が追加される。「参照の追加」ダイアログには「参照」ボタンなんて言う非常に紛らわしいボタンもあるので注意して欲しい。これで設定は完了だ。

■InkCollectorオブジェクト変数の宣言

 先にInkCollectorオブジェクトはインスタンスを作成しなければならないと述べたが、作成したインスタンスへの参照を格納しておく変数が必要になる。以降はこの変数を通してInkCollectorのインスタンスにアクセスする。故にまずこのための変数を宣言する必要がある。 Form1クラスで以下のように記述しよう。


public class Form1 : System.Windows.Forms.Form
{
// InkCollectorオブジェクト変数の宣言
Microsoft.Ink.InkCollector myInkCollector;

 これは Form1クラスのメンバ変数となるが、特に何も指定していないのでprivateになる。privateとはこのクラスの外側からはアクセスできないと言うことだ。ちなみにクラスの外側からアクセスしたい場合はpublicと宣言すれば良い。もちろん、InkCollectionサンプルのようにprivateであることを明示的に記述しても良い。


private Microsoft.Ink.InkCollector myInkCollector;

■InkCollectorインスタンスの作成

 FormのLoadイベントでInkCollectorのインスタンスを作成する。以下のように書いてみよう。


// InkCollectorインスタンス作成
myInkCollector = new Microsoft.Ink.InkCollector(this.Handle);

 InkCollectorのインスタンスを作成するには、まずnewでInkCollectorのコンストラクタを呼び出す。コンストラクタはインスタンスの作成時に呼び出す特殊なメソッドと覚えておいてもらえれば問題ないだろう。インスタンスを作成したらその参照を先程のmyInkCollectorメンバ変数に格納する。

■InkCollectorインスタンスを操作する

 いよいよ仕上げだ。先に作成したInkCollectorのインスタンスに対していくつかプロパティを設定する。最終的にFormのLoadイベントは以下のように記述しよう。


private void Form1_Load(object sender, System.EventArgs e)
{
// InkCollectorインスタンス作成
myInkCollector = new Microsoft.Ink.InkCollector(this.Handle);

// 線幅を100に設定
myInkCollector.DefaultDrawingAttributes.Width = 100;
// 線の色を変更
myInkCollector.DefaultDrawingAttributes.Color = Color.Blue;

// InkCollectorをEnable
myInkCollector.Enabled = true;
}

 DefaultDrawingAttributes.Widthプロパティはインクの線の太さ、DefaultDrawingAttributes.Colorはインクの線の色である。そして最後にEnabledプロパティをtrueに設定するのを忘れないで欲しい。これを忘れるとインクを使うことができない。

 コードを書き終わったら早速ビルドして実行してみよう。ビルドは問題なく終了しただろうか。表示されたウィンドウ上に自由に文字や絵を描いてみよう。

■今回のおさらい

 今回はタブレットPCらしくInkCollectorオブジェクトを使ってみた。新たに参照設定と言う操作を行って、InkCollectorと言う既存のオブジェクトを利用した。クラスのメンバ変数と言う概念にも触れた。InkCollectorインスタンスに対していろいろな操作を行い、インク機能を使ってみた。

 また、今回作成したサンプルではフルネームを書いたが、以下のように名前空間を使うと"Ink Collection"サンプルのようにMicrosoft.Ink.InkCollectorのMicrosoft.Ink.の部分は省略して、単にInkCollectorと記述することができる。


using Microsoft.Ink;

 タブレットPCと言っても既存のプログラミングの考え方を変えるものではなく、かつ簡単にその機能を使用できることがお分かりいただけたと思う。

 それではまた。



タブレットPC開発入門 C#編 第11回 お待ちかね!タブレット

Reported by Allergy


Last-modified: Sun, 24 May 2009 23:45:30 JST (3462d)