コード例 #1
0
        // 描画
        private unsafe void xnDraw()
        {
            // カメライメージの更新を待ち、画像データを取得する
            context.WaitOneUpdateAll(image);
            ImageMetaData imageMD = image.GetMetaData();

            Graphics g;

            // カメラ画像の作成
            lock (this) {
                // 書き込み用のビットマップデータを作成
                Rectangle  rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
                BitmapData data = bitmap.LockBits(rect, ImageLockMode.WriteOnly,
                                                  System.Drawing.Imaging.PixelFormat.Format24bppRgb);

                // 生データへのポインタを取得
                byte *dst = (byte *)data.Scan0.ToPointer();
                byte *src = (byte *)image.ImageMapPtr.ToPointer();

                for (int i = 0; i < imageMD.DataSize; i += 3, src += 3, dst += 3)
                {
                    dst[0] = src[2];
                    dst[1] = src[1];
                    dst[2] = src[0];
                }

                bitmap.UnlockBits(data);

                // 手の軌跡を描画
                if (handPoints.Count != 0)
                {
                    Point3D start = depth.ConvertRealWorldToProjective(handPoints.Peek());
                    foreach (Point3D handPoint in handPoints)
                    {
                        Point3D pt = depth.ConvertRealWorldToProjective(handPoint);
                        g = Graphics.FromImage(bitmap);
                        g.DrawLine(pen, start.X, start.Y, pt.X, pt.Y);
                        start = pt;
                    }

                    // 先頭要素を削除
                    if (handPoints.Count > MAX_POINT)
                    {
                        handPoints.Dequeue();
                    }
                }
            }


            // 現在の状態を表示する
            g = Graphics.FromImage(bitmap);
            string message = "Gesture:RaiseHand" +
                             ", Status:" + gestureStatus.ToString() + "\n" +
                             "Hand:" + handStates.ToString();

            g.DrawString(message, font, brush, point);
        }
コード例 #2
0
    public void SetStatus(HandStatus status)
    {
        m_PlayerStatus.gameObject.SetActive(true);
        Color statusColor = Color.black;

        switch (status)
        {
        case HandStatus.WIN:
            statusColor = Color.green;
            break;

        case HandStatus.BJ:
            statusColor = Color.yellow;
            break;

        case HandStatus.LOSE:
        case HandStatus.BUST:
            statusColor = Color.red;
            break;
        }
        m_PlayerStatus.color = statusColor;
        m_PlayerStatus.text  = status.ToString();
    }