.. default-domain:: csharp


.. _RENDERICON:

==============================
RENDERICON
==============================

 C#: :ref:`CWinCtrlRenderIcon`

 アイコンにレンダリングするためのコントロールです。

 指定されたレンダーテクスチャから自動的に矩形を切り出し、レンダリングします。
 
 複数のレンダリング結果を一枚のレンダーテクスチャ内に含めることができるため、一度レンダリングした後のアイコンの描画が高速です。
 
 例えば、リストボックス内のコンテンツに着せ替え可能アバターアイコンを表示したいときなどに使うと効果的です。

 また、通常の :ref:`ICON<ICON>` と同様、通常のテクスチャも一緒にレンダリング可能です。
 
 ただし、 :ref:`TEXTURE_ZOFFSET<WINDOW_PROP_TEXTURE_ZOFFSET>` には気を付ける必要があります。

  RENDERICON(コントロール名) {

    プロパティ1;
  
    プロパティ2;
  
       :
  
       :

    プロパティn;

  };

 .. note::

  レンダリング対象に割り当てられるのは、1枚のみです。
  

記述例
===========
 ::

  RENDERICON(Avatar) {
     ID = 000_000_00330;
     POSITION = -315,-22;
     TEX_ID = 255_000_00010;		//render texture id
     CONTENTS_SIZE = 1024,1024;	//render texture size
     SIZE = 64,64;				//display size
  };

..

 この例では、1024/64 x 1024/64 = 256個のアイコンを一枚のテクスチャに共有させることができます。
 例えば、リストにアイコンを列挙したとき、256個まで一枚のレンダーテクスチャにまとめて、レンダリング可能です。
 ただし、256個以上の共有を行うと、領域の確保に失敗し、レンダリングできなくなります。

プロパティ
==================

代表的なデフォルト値
-----------------------
 ::

  COLOR = 1,1,1,1;
  SE_ID = 0;

**ID** = コントロールID
-------------------------------------------

 コントロールIDを定義します。
 
 ::

  ID = 001_000_00010;

 .. note::

  設定しなかったときは、自動的にハッシュ値から生成します。


**POSITION** = :ref:`X,Y<RATIOVALUE>`
-------------------------------------------

 表示位置を決定します。
 STYLEの :ref:`アンカー<CTRL_ANCHOR>` 指定に応じて、基準位置が変わります。

 ::

  POSITION = 32,{50} + 64;

 ..

 座標は :ref:`割合指定<RATIOVALUE>` が可能です。

**TEX_ID** = テクスチャID
-------------------------------------------

**TEX_ID** n = テクスチャID
-------------------------------------------

 レンダーテクスチャのIDを指定します。
 同じIDを使うとレンダーテクスチャを共有します。
 共有したときは、レンダーテクスチャ内部をアイコンのサイズに分割して使用してくれます。

 この値を、:ref:`WINDOW_PROP_TEXTURE_ZOFFSET` に指定することによって、
 レンダリング順序を制御することができます。

 確保されるレンダーテクスチャのサイズは、CONTENTS_SIZEから取得します。

 .. note::

  必須のプロパティです。

 .. note::

  共有するのは同一ウィンドウ内においての話です。
  ウィンドウを超えて共有はしません。

 .. note::

  コントロール毎に、レンダリング対象のテクスチャIDを一つだけ指定可能です。


**TEX_ID** n = テクスチャID,パーツID
-------------------------------------------

**TEX_ID** n = パーツID
-------------------------------------------

 テクスチャIDとパーツIDを指定します。
 
 n = [0..7]で指定可能です。
 
 n = 0の時は、TEX_IDと同じテクスチャを操作します。

 パーツIDを指定したときは、レンダリング対象にならず、通常のテクスチャとしてレンダリングされます。


**CONTENTS_SIZE** = :ref:`レンダーテクスチャサイズ,レンダーテクスチャサイズ<RATIOVALUE>`
-----------------------------------------------------------------------------------------------

 レンダーテクスチャのサイズを指定します。
 共有するアイコン間では、共通の値を指定するようにしてください。

 違う値を設定したとき、動作の保証はありません。

 .. note::

  必須のプロパティです。

  共有するレンダーテクスチャ間で同じ値を設定するようにしてください。
  
  正方形で指定し、幅、高さ共に2のべき乗を指定するようにしてください。
  また、最大2048以内に収めておくと互換性の問題が出ずらいです。

 .. note::

  割合指定も可能ですが、互換性の問題もあり、直値を指定するようにしてください。


**TEXTURE_OFFSET** n = :ref:`オフセットX,オフセットY<RATIOVALUE>`
---------------------------------------------------------------------

 テクスチャの表示オフセットを指定します。
 
 n = [0..7]で指定可能です。
 
 テクスチャオフセットは :ref:`割合指定<RATIOVALUE>` が可能です。

**SIZE** = :ref:`横サイズ,縦サイズ<RATIOVALUE>`
--------------------------------------------------

 表示サイズを変更します。

 レンダーテクスチャから、どれ位の矩形を切り出すかを決定するために使われます。
 
 共有しているアイコン間で違う値を設定するとエラーになります。

 ::

  SIZE = 64,32;	//64x32

 ..

 サイズは :ref:`割合指定<RATIOVALUE>` が可能です。

 .. note::
  必須のプロパティです。

  共有するレンダーテクスチャ間で同じ値を設定するようにしてください。

**COLOR** = R,G,B,A
-------------------------------------------

 カラーを指定します。
 
 R,G,Bについては、0~2の間で指定してください。
 
 1を超えたとき、そのカラー成分を2倍まで上げて表示することができます。

 Aについては、0~1の間で指定してください。

**COLOR1** = R,G,B,A
-------------------------------------------

 レンダリングする際の背景のクリアカラーを指定します。
 
 R,G,B,Aについては、0~1の間で指定してください。

**SE_ID** = SE_ID
-------------------------------------------

 押されたときに鳴らす音のIDを設定します。
 デフォルトは、0になっており、音がなりません。

**STYLE** = フラグ0|フラグ1|..|フラグn
-------------------------------------------

 コントロールの表示アンカーを指定できます。

.. tabularcolumns:: |p{0.4\linewidth}|p{0.6\linewidth}|

+--------------------------+---------------------------------------------------------------+
| 表示位置アンカーフラグ   |説明                                                           |
+==========================+===============================================================+
|ANCHOR_DEFAULT            |アンカー位置を左上に設定                                       |
|                          |                                                               |
|                          |ANCHOR_LEFTTOPと同じ                                           |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_LEFTTOPになる。     |
+--------------------------+---------------------------------------------------------------+
| ANCHOR_LEFTTOP           |アンカー位置を左上に設定                                       |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_LEFTTOPになる。     |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_LEFT               |アンカー位置を左に設定                                         |
|                          |                                                               |
|                          |縦にはセンタリング                                             |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_LEFTになる。        |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_LEFTBOTTOM         |アンカー位置を左に設定                                         |
|                          |                                                               |
|                          |縦には下辺を基準に配置                                         |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_LEFTBOTTOMになる。  |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_TOP                |アンカー位置を上辺に設定                                       |
|                          |                                                               |
|                          |横方向にはセンタリング                                         |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_TOPになる。         |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_CENTER             |アンカー位置を画面中央にセンタリング                           |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_CENTERになる。      |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_BOTTOM             |アンカー位置を底辺に設定                                       |
|                          |                                                               |
|                          |横方向にはセンタリング                                         |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_BOTTOMになる。      |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_RIGHTTOP           |アンカー位置を右上に設定                                       |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_RIGHTBOTTOMになる。 |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_RIGHT              |アンカー位置を右に設定                                         |
|                          |                                                               |
|                          |縦にはセンタリング                                             |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_RIGHTになる。       |
+--------------------------+---------------------------------------------------------------+
|ANCHOR_RIGHTBOTTOM        |アンカー位置を右に設定                                         |
|                          |                                                               |
|                          |縦には下辺を基準に配置                                         |
|                          |                                                               |
|                          |コントロールの中心位置はデフォルトで、BASE_RIGHTBOTTOMになる。 |
+--------------------------+---------------------------------------------------------------+


 コントロールの中心位置を指定できます。

.. tabularcolumns:: |p{0.4\linewidth}|p{0.6\linewidth}|

+-------------------+-----------------------------------------+
|中心位置変更フラグ | 説明                                    |
+===================+=========================================+
|BASE_DEFAULT       |アンカーフラグに応じて変わる。           |
|                   |                                         |
|                   |特に指定しなければ、これになります。     |
|                   |                                         |
|                   |各アンカーフラグの説明を参照             |
+-------------------+-----------------------------------------+
|BASE_LEFTTOP       |中心位置をコントロールの左上に設定       |
+-------------------+-----------------------------------------+
|BASE_LEFT          |中心位置を左に設定                       |
|                   |                                         |
|                   |縦にはコントロールの真中                 |
+-------------------+-----------------------------------------+
|BASE_LEFTBOTTOM    |中心位置を左下に設定                     |
+-------------------+-----------------------------------------+
|BASE_TOP           |中心位置を上辺に設定                     |
|                   |                                         |
|                   |横にはコントロールの中心                 |
+-------------------+-----------------------------------------+
|BASE_CENTER        |中心位置をコントロールの中心             |
+-------------------+-----------------------------------------+
|BASE_BOTTOM        |中心位置を底辺に設定                     |
|                   |                                         |
|                   |横方向にはコントロールの真中             |
+-------------------+-----------------------------------------+
|BASE_RIGHTTOP      |中心位置をコントロールの右上に設定       |
+-------------------+-----------------------------------------+
|BASE_RIGHT         |中心位置を右に設定                       |
|                   |                                         |
|                   |横にはコントロールの中心                 |
+-------------------+-----------------------------------------+
|BASE_RIGHTBOTTOM   |中心位置を右下に設定                     |
+-------------------+-----------------------------------------+

 機能を制限するスタイルは以下のものがあります。

+----------------+-----------------------------+
|機能制限スタイル|説明                         |
+================+=============================+
|HIDE            |表示を隠す。                 |
+----------------+-----------------------------+
|DRAG            |ドラッグ可能にする。         |
+----------------+-----------------------------+
|DISABLE         |押せなくし、暗くする。       |
+----------------+-----------------------------+
|NOHIT           |押せなくする。               |
+----------------+-----------------------------+