Ejemplo n.º 1
0
        private void tmDraw_Tick(object sender, EventArgs e)
        {
            int   w  = (int)Math.Max(((this.Width - space) / (float)(space + thumbnailSize)), 1);
            int   l  = pageThumbnails.Length + w;
            float dt = tmDraw.Interval / 1000f;

            posY += speedY * dt;

            int top = space + (l / w) * (space + thumbnailSize);

            if (posY < 0)
            {
                posY = 0;
            }
            if (posY > top)
            {
                posY = top;
            }

            if (speedY > 0)
            {
                speedY = Math.Max(0, speedY - friction * dt);
            }
            else if (speedY < 0)
            {
                speedY = Math.Min(0, speedY + friction * dt);
            }

            if (redraw || speedY != 0)
            {
                redraw = false;
                renderer.Begin(Style.Default.MenuBackground);

                for (int y = 0; y < (float)l / w; y++)
                {
                    for (int x = 0; x < w; x++)
                    {
                        int ind = y * w + x;
                        if (ind < pageThumbnails.Length)
                        {
                            var rect = GetRect(x, y);
                            renderer.DrawImage(pageThumbnails[ind], rect);
                            if (ind == currentPageIndex)
                            {
                                renderer.DrawRect(Style.Default.Selection, 8, rect);
                            }
                        }
                        else if (ind == pageThumbnails.Length)
                        {
                            var rect  = GetRect(x, y);
                            var rect2 = new RectangleF(rect.X + thumbnailSize / 4, rect.Y + thumbnailSize / 4,
                                                       thumbnailSize / 2, thumbnailSize / 2);
                            renderer.DrawImage(bmpAdd, rect2);
                        }
                    }
                }
                renderer.End();
            }
        }
Ejemplo n.º 2
0
        public override void Draw(GPURenderer renderer, int width, int height)
        {
            renderer.Transform(Transformation);
            RectangleF rect = new RectangleF(0, 0, width, size);

            renderer.FillRectangle(Color.FromArgb(100, 200, 200, 200), rect);
            renderer.DrawRect(Color.Black, 1, rect);

            float scale = parent.GetTransform().GetScale();
            int   linMM = (int)(Util.PointToMm(width) / scale);
            float len1  = Util.MmToPoint(3);
            float len2  = Util.MmToPoint(5);
            float len3  = Util.MmToPoint(10);

            renderer.BeginLines(Color.Black, 1);
            for (int i = 0; i <= linMM; i++)
            {
                float x  = Util.MmToPoint(i) * scale;
                float y1 = len1;
                if (i % 5 == 0)
                {
                    y1 = len2;
                }
                if (i % 10 == 0)
                {
                    y1 = len3;
                }
                renderer.BatchedLine(new PointF(x, 0), new PointF(x, y1));
                renderer.BatchedLine(new PointF(x, size), new PointF(x, size - y1));
                //renderer.DrawLine(Color.Black, 1, new PointF(x, 0), new PointF(x, y1));
                //renderer.DrawLine(Color.Black, 1, new PointF(x, size), new PointF(x, size - y1));
            }
            renderer.EndLines();

            float  tx  = width / 2;
            double deg = Math.Abs(
                Math.Round(
                    (Transformation.GetRotation() - parent.GetTransform().GetRotation())
                    * 18000.0 / Math.PI) / 100.0);

            if (deg > 90)
            {
                deg = 180 - deg;
            }
            renderer.DrawText("" + deg + "°", PBrush.CreateSolid(Color.Tomato),
                              new RectangleF(Util.PointToMm(tx), 10, 50, 50), 20);
        }