示例#1
0
        /// <summary>
        /// Drawing code
        /// </summary>
        /// <param name="r"></param>
        public void Draw(Renderer r)
        {
            if (pointList.Count == 0)
            {
                UpdatePointList();
            }

            if ((gestureName == "CIRCLE") || (gestureName == "SQUARE") || (gestureName == "TRIANGLE"))
            {
                //DrawToolOld.ResetRefPoints();
                ctrPtWorld = r.ScreenToWorld(pointList.ElementAt(0));
                GLUtility.DrawCircle(new GLPen(Color.Blue, 0.2f), ctrPtWorld, 0.3f);
            }

            else if (gestureName == "X")
            {
                //DrawToolOld.ResetRefPoints();
                ctrPtWorld = r.ScreenToWorld(pointList.ElementAt(0));
                GLUtility.DrawCross(new GLPen(Color.Red, 0.2f), new Vector2(ctrPtWorld.X, ctrPtWorld.Y), 0.5f);
            }

            else if ((gestureName == "ARROW") || (gestureName == "PATH") || (gestureName == "SENTENCE"))
            {
                //DrawToolOld.ResetRefPoints();
                pthStartWorld = r.ScreenToWorld(pointList.ElementAt(0));
                pthEndWorld   = r.ScreenToWorld(pointList.ElementAt(1));
                GLUtility.DrawCircle(new GLPen(Color.Blue, 0.2f), pthStartWorld, 0.3f);
                GLUtility.DrawCross(new GLPen(Color.Red, 0.2f), new Vector2(pthEndWorld.X, pthEndWorld.Y), 0.5f);
            }
            else
            {
                //DrawToolOld.ResetRefPoints();
            }
            if ((gestureName == "PATH") || (gestureName == "SENTENCE"))
            {
                //DrawToolOld.ResetRefPoints();
                ln1StartWorld = r.ScreenToWorld(pointList.ElementAt(2));
                ln1EndWorld   = r.ScreenToWorld(pointList.ElementAt(3));
                ln2StartWorld = r.ScreenToWorld(pointList.ElementAt(4));
                ln2EndWorld   = r.ScreenToWorld(pointList.ElementAt(5));
                ln3StartWorld = r.ScreenToWorld(pointList.ElementAt(6));
                ln3EndWorld   = r.ScreenToWorld(pointList.ElementAt(7));
                GLUtility.DrawLine(new GLPen(Color.Black, 1.0f), ln1StartWorld, ln1EndWorld);
                GLUtility.DrawLine(new GLPen(Color.Black, 1.0f), ln2StartWorld, ln2EndWorld);
                GLUtility.DrawLine(new GLPen(Color.Black, 1.0f), ln3StartWorld, ln3EndWorld);
            }

            // draw pixels
            if (pixelList.Count > 0)
            {
                foreach (PointF v3 in drawPixelList)
                {
                    drawPixel.X = ((float)v3.X - (w / 2));
                    drawPixel.Y = ((float)v3.Y - (h / 2));

                    drawPixel2.X = ((float)v3.X - (w / 4));
                    drawPixel2.Y = ((float)v3.Y - (h / 4));

                    float scale = r.Scale();

                    pixelRect = new RectangleF((float)drawPixel.X, (float)drawPixel.Y, w, h);
                    RectangleF pixelRect2 = new RectangleF((float)drawPixel2.X, (float)drawPixel2.Y, w / 2, h / 2);

                    GLUtility.DrawRectangle(new GLPen(Color.Black, 0.1f), pixelRect);
                    GLUtility.DrawRectangle(new GLPen(Color.Black, 0.1f), pixelRect2);
                }
            }
        }