|
IT総合情報ポータル「ITmedia」 |
ITとビジネスのニュース専門サイト「ITmedia News」 |
企業のためのIT情報サイト「ITmedia エンタープライズ」 |
IT製品導入支援サイト「TechTargetジャパン」 |
経営者とCIOのコミュニティー「ITmedia エグゼクティブ」 |
PCとMacの専門サイト「ITmedia +D PC USER」 |
携帯、スマートフォンの専門サイト「ITmedia +D Mobile」 |
電子書籍の専門サイト「ITmedia eBook USER」 |
デジカメの専門サイト「ITmedia デジカメプラス」 |
AV機器の専門サイト「ITmedia +D LifeStyle」 |
旬なモノネタ「ITmedia ガジェット」 |
ニコ生、Ustreamの動画番組表「ライブガイド」 |
ビジネスブログ・メディア「ITmedia オルタナティブ・ブログ」 |
ちょっと気になるネットの話題「ねとらぼ」
BREW プログラミング入門(7)
|
| 関数名 | 解説 |
| SetClip | クリッピング領域を設定します |
| GetClip | クリッピング領域を取得します |
| 関数名 | 解説 |
| SetClipRect | クリッピング領域(矩形)を設定します |
| GetClipRect | クリッピング領域(矩形)を取得します |
クリッピングの前提事項と制約
上記の表で、IGraphicsインタフェースのAPIとIDisplayインタフェースのAPIが、それぞれ存在することが分かってもらえると思いますが、IGraphicsに設定したクリッピング領域はIGraphicsの描画APIにのみ有効で、IDisplayに設定したクリッピング領域はIDisplayの描画APIにのみ有効です。そして、IGraphicsに設定できるクリッピング領域は矩形以外の円や楕円も設定できるのに対して、IDisplayに設定できるのは矩形のみです。このことは少々面倒くさい事態を招きます。
BREWで文字列を描画するにはIDisplayインタフェースを使用し、図形を描画するにはIGraphicsインタフェースを使用します(IDisplayインタフェースにも若干の図形描画APIは存在しますが、IGraphicsインタフェースのAPIのほうが使いやすいと思います。詳しくはBREW APIリファレンスなどを参照してください)。
ということは、文字列と図形両方に対してクリッピングを行いたい場合はIDisplayとIGraphics両方に対してクリッピングの設定をしてやらなければなりません。また、IDisplayの方は矩形しか扱えないため、矩形以外のクリッピング領域は文字列には適応できないことになります。

実現可能な例と不可能な例
IGraphicsインタフェースのクリッピングを使ってみる
それでは、クリッピングの前提事項と制約を説明したところで、クリッピングとはどのような物なのか実際に実験してみましょう。
まずは、IGraphicsインタフェースのみを使用して図形を描いてみましょう。以下のコードは、矩形領域でクリッピングしてから、四角形と円を描いています。
|
※一部省略されています。完全なコードはこちらを参照してください(クリックで別ウィンドウにソースコード表示)
IGRAPHICS_SetClip(graphics,&clip,0);のクリッピング領域を設定している行をコメントアウトするとクリッピングされなくなります。どのようにクリッピングが働くのかは以下の図を参照してください。

クリッピングを使用したときとそうでないとき(矩形領域)
次に、円領域でクリッピングしてから、四角形と円を描いてみます。
|
※一部省略されています。完全なコードはこちらを参照してください(クリックで別ウィンドウにソースコード表示)
矩形領域でのクリッピングの時と同様にIGRAPHICS_SetClip(graphics,&clip,0);の行をコメントアウトするとクリッピングされなくなります。

クリッピングを使用したときとそうでないとき(円領域)
IGraphics インタフェースではこのほかにも、楕円領域でのクリッピングが可能です(ほかにも、クリッピングに設定できる領域は定義されていますが、現在のBREWではサポートしていないようです)。
IDisplayインタフェースのクリッピングを使ってみる
では次に、IDisplayインタフェースを使用して文字列と図形を描いてみましょう。以下のコードは、矩形領域でクリッピングしてから、文字列と四角形を描いています。
|
※一部省略されています。完全なコードはこちらを参照してください(クリックで別ウィンドウにソースコード表示)
IDISPLAY_SetClipRect(display,&clip);のクリッピング領域を設定しているコードをコメントアウトするとクリッピングされなくなります。

クリッピングを使用したときとそうでないとき(IDisplay)
実際のアプリでのクリッピング
ここまでは、IGraphicsとIDisplayを単独で使用したときの処理を例に示してみましたが、実際のアプリではIGraphicsとIDisplayを混在させて使用する事が多いと思います。例えば、以下のようなデザインを表示させる時には混在させて使用しなければなりません。

IGraphicsとIDisplayを混在させなければならないとき
また、クリッピングの制約でも示しましたが、文字列を矩形以外でクリッピングすることは不可能です。同様に、IDisplayを使用するビットマップの描画時も矩形以外でクリッピングすることはできません。どうしても矩形以外でクリッピングしたいときは、ビットマップレベルで透過色で処理する方法があります。
では、上の図に示したデザインを表示するコードを下に示します。
|
※一部省略されています。完全なコードはこちらを参照してください(クリックで別ウィンドウにソースコード表示)
[堀口淳史, ITmedia]
Copyright© 2012 ITmedia, Inc. All Rights Reserved.
前のページ | 1/2 | 次のページ
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!
ドスパラ通販は最短当日出荷!
新商品でもお待たせしません!
さらにパソコンは送料無料!!