40章 グラフィックス・デバイス・インターフェース(GDI)入門(その5)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis"></meta>
<title>40章 グラフィックス・デバイス・インターフェース(GDI)入門(その5)
</title>
</head>

<body bgcolor="WHITE">
<font size="5">40章 グラフィックス・デバイス・インターフェース(GDI)入門(その5)
</font>
<hr>
<p align="LEFT">
<p align="RIGHT">
<p align="CENTER">
<a href="chap40.lzh">ダウンロード</a>
<p>
 今回は、リージョンといわれるオブジェクトを作成し、そのリージョンを用いて、簡単な画面の操作をしてみましょう。基本となるプログラムソースは、前章の物を使いますので、差分となる関数のみを載せます。
<p>
<table border="1" bgcolor="#F0F0F0">
<caption align="BOTTOM">リスト40-1
<tr><td>
<pre>
/* 適当に作った(^^)線を描画さす関数 */
/* Wm_PaintProc()からしか呼ばれない */
/* HDC dc :デバイスコンテキスト */
/* doubel t :三角関数で線を描く最初の値 */
/* double d :増分 */
/* int n :描画する線の数 1以上  */
static void Draw(HDC dc,double t,double d,int n)
{
  int     c;
   double  r;
   HRGN    hrgn;   /*  リージョンのハンドル    */

  /*ビューポートの原点を移動さす*/
   SetViewportOrgEx(dc,width/2,height/2,NULL);
   /*  半径を決める    */
   r=(width+height)/8.0;
   for(c=0;c&lt;n;c++)
   {
       MoveToEx(dc,(int)(r*cos(3.0*t+d*c)+width/6.0*sin(t)),(int)(r*cos(t/3.0)*sin(t+d*c)),NULL);
       LineTo(dc,(int)(r*sin(t)*sin(3.0*t+d*c)+width/5.0*cos(t)),(int)(r*sin(t/2.0+d*c)));
   }
<b>
  /*  リージョンを使って、描画した線を反転さす    */
   hrgn=CreateEllipticRgn((int)(-width/4.0*cos(t)-width/10.0),(int)(-height/4.0*sin(t)+height/10.0),
                           (int)(width/4.0*cos(t)+width/10.0),(int)(height/4.0*sin(t)+height/10.0));
   InvertRgn(dc,hrgn); /*  ここで反転させている    */
   DeleteObject(hrgn); /*  ここでリージョンを廃棄  */
</b>
}
</pre>
</table>
<hr>
<p>
 関数の説明
<p>
<b>
・CreateEllipticRgn関数
</b>
<p>
 楕円形のリージョンを作成する関数です。リージョンを作成する関数には、他に、CreateRectRgn関数などがあります。リージョンというのは、領域という意味で、この領域に対して、数種類の操作が行えます。
<p>
<b>
・InvertRgn関数
</b>
<p>
 この関数は、第2引数で指定されたリージョン(領域)を反転さすものです。
<p>
<b>
・DeleteObject関数
</b>
<p>
 リージョンもオブジェクトゆえ、この関数で廃棄できます。
<hr>
<p>
 今回も簡単すぎましたね。これで、パレットを除く、すべてのGDIオブジェクトを説明したことになります。ペンやブラシなどのGDIオブジェクトの作成の前に、気分転換で、コントロールのサブクラス化を次回にやりたく思います。結構、FAQですね。
<p>
 では、お楽しみに。
<p align="RIGHT">
2003年3月12日
<hr>
<p align="RIGHT">
<a href="/web/20150829044106/http://web.kyoto-inet.or.jp:80/people/ysskondo/index.html">目次</a><br>
<hr>
<p align="RIGHT">
著作権者:近藤妥
</body>
</html>

  • 最終更新:2018-03-11 05:33:49

このWIKIを編集するにはパスワード入力が必要です

認証パスワード