Ejemplo n.º 1
0
        private void ChangeRectangleSize(int growSize, FanartControlImage img)
        {
            Rectangle pos = new Rectangle();

            pos.X         = img.Position.X - (m_thumbSize.X / 2) - (growSize / 2);
            pos.Y         = img.Position.Y - (m_thumbSize.Y / 2) - (growSize / 2);
            pos.Width     = m_thumbSize.X + growSize;
            pos.Height    = m_thumbSize.Y + growSize;
            img.Rectangle = pos;
        }
Ejemplo n.º 2
0
        private void UpdatePosition()
        {
            if (m_mouseDownClosestDegree >= 0 && m_mouseDownClosestDegree < 360)
            {
                FanartControlImage img = m_imagePositions[0];
                img.Degree = m_mouseDownClosestDegree;
                float  size = CalcSize(m_mouseDownClosestDegree);//how
                PointF p    = m_elipse[m_mouseDownClosestDegree];
                m_imagePositions[0].Rectangle = new Rectangle((int)(p.X - (m_thumbSize.X / 2) * size),
                                                              (int)(p.Y - (m_thumbSize.Y / 2) * size),
                                                              (int)(m_thumbSize.X * size),
                                                              (int)(m_thumbSize.Y * size));

                //m_imagePositions[0].Position.X = 10;// = (int)m_elipse[m_mouseDownClosestDegree].X;
                //m_imagePositions[0].Position.Y =
            }
        }
Ejemplo n.º 3
0
        private void Draw(Rectangle rect, Graphics g)
        {
            //draw debug output
            if (m_imagePositions.Count > m_selectedIndex && m_selectedIndex > 0)
            {
                g.DrawString("Current: " + m_imagePositions[m_selectedIndex].Degree + ", Nearest: " + m_mouseDownClosestDegree + ", Position: " + m_position, SystemFonts.DefaultFont, SystemBrushes.HotTrack, 10, 10);
            }

            //draw the ellipse
            PointF prev = PointFromEllipse(m_elipseRect, 0);

            for (int i = 1; i < 360; i++)
            {
                PointF next = PointFromEllipse(m_elipseRect, i);
                g.DrawLine(new Pen(new SolidBrush(Color.Black), 5), prev, next);
                prev = next;
            }

            if (m_imagePositions.Count > 0)
            {
                FanartControlImage fci = m_imagePositions[0];
                if (fci.Image != null)
                {
                    g.DrawImage(fci.CreateFramedImage(), fci.Rectangle);
                }
                else
                {
                    g.FillRectangle(new SolidBrush(FrameColor), fci.Rectangle);
                    g.DrawRectangle(new Pen(Color.Black), fci.Rectangle);
                }
            }

            //Draw a red dot representing the closest match
            if (m_mouseDownClosestDegree != -99)
            {
                g.DrawEllipse(new Pen(new SolidBrush(Color.Red)),
                              m_elipse[m_mouseDownClosestDegree].X - 5,
                              m_elipse[m_mouseDownClosestDegree].Y - 5, 10, 10);
            }

            return;

            /*rect.Inflate(-5, -5);
             * prev = PointFromEllipse(m_elipseRect, 0);
             * for (int i = 1; i < 360; i++)
             * {
             * PointF next = PointFromEllipse(m_elipseRect, i);
             * g.DrawLine(new Pen(new SolidBrush(Color.Black), 5), prev, next);
             * prev = next;
             * }
             * for (int i = 0; i < m_numberOfImages; i++)
             * {
             * //Draw the border
             * if (m_imagePositions.Count > i)
             * {
             *
             *
             *  //g.DrawRectangle(new Pen(new SolidBrush(Color.Black)), img.Rectangle);
             * }
             * }
             * m_imagePositions.Sort(delegate(FanartControlImage i1, FanartControlImage i2) { return i1.Position.Y.CompareTo(i2.Position.Y); });
             * foreach (FanartControlImage fci in m_imagePositions)
             * {
             * if (fci.Image != null)
             * {
             *  g.DrawImage(fci.CreateFramedImage(), fci.Rectangle);
             *
             * }
             * else
             * {
             *  g.FillRectangle(new SolidBrush(FrameColor), fci.Rectangle);
             *  g.DrawRectangle(new Pen(Color.Black), fci.Rectangle);
             * }
             * }
             *
             * m_imagePositions.Sort(delegate(FanartControlImage i1, FanartControlImage i2) { return i1.Index.CompareTo(i2.Index); });
             *
             * if (m_mouseDownClosestDegree != -99)
             * {
             * g.DrawEllipse(new Pen(new SolidBrush(Color.Red)),
             *              m_elipse[m_mouseDownClosestDegree].X - 5,
             *              m_elipse[m_mouseDownClosestDegree].Y - 5, 10, 10);
             * }
             */
        }
Ejemplo n.º 4
0
        private void UpdateRectanglePositions(int _position)
        {
            if (_position < 0)
            {
                _position += 360;
            }
            if (_position >= 0 && _position < 360)
            {
                m_position = _position;
                //Console.WriteLine("Change pos to : " + _position);
                //PointF p;
                //int degr = 360 / m_numberOfImages;
                double degr  = 0.0;
                int    index = 1;

                //first image
                if (m_imagePositions.Count == 0)
                {
                    m_imagePositions.Add(new FanartControlImage(index));
                }
                m_imagePositions[0].Degree = 0;
                Point p = new Point((int)m_elipse[0].X, (int)m_elipse[0].Y);
                m_imagePositions[0].Position  = p;
                m_imagePositions[0].Rectangle = new Rectangle((p.X - m_thumbSize.X / 2),
                                                              (p.Y - m_thumbSize.Y / 2),
                                                              m_thumbSize.X, m_thumbSize.Y);



                for (int i = 1; i < 360; i++)
                {
                    int    growSize       = 0;
                    double growMultiplier = 1;
                    if (m_imagePositions.Count <= index)
                    {
                        m_imagePositions.Add(new FanartControlImage(index));
                    }
                    FanartControlImage img = m_imagePositions[index];
                    img.Degree = i;
                    if (img.Degree > 0 && img.Degree <= 90)
                    {//right-down portion of elipse
                        //size grows
                        growSize       = (int)((double)img.Degree * GROWING_MULTIPLIER);
                        growMultiplier = img.Degree * GROWING_MULTIPLIER / 100;
                        //Console.WriteLine(i + ": " + img.Degree + "°, Growsize: " + growSize);
                    }
                    else if (img.Degree > 90 && img.Degree <= 180)
                    {
                        growSize = (int)(((double)(90 - (img.Degree - 90))) * GROWING_MULTIPLIER);
                        //Console.WriteLine(i + ": " + img.Degree + "°, Growsize: " + growSize);
                    }
                    else if (img.Degree > 180 && img.Degree <= 270)
                    {
                        growSize = (int)((img.Degree - 180) * ((-1) * GROWING_MULTIPLIER));
                    }
                    else if (img.Degree > 270 && img.Degree <= 360)
                    {
                        growSize = (int)((90 - (img.Degree - 270)) * ((-1) * GROWING_MULTIPLIER));
                    }
                    PointF pos    = m_elipse[i];
                    int    width  = (int)((m_thumbSize.Y + m_distance) * growMultiplier);
                    int    height = (int)((m_thumbSize.X) * growMultiplier);

                    if (!m_imagePositions[index - 1].Rectangle.IntersectsWith(new Rectangle((int)(pos.X - (width / 2.0)), (int)(pos.Y - (height / 2.0)), width, height)))
                    {//the two images don't intersect -> use this degree
                        ChangeRectangleSize(growSize, img);

                        m_imagePositions[index].Degree    = (int)(m_position + degr);
                        m_imagePositions[index].Position  = new Point((int)pos.X, (int)pos.Y);
                        m_imagePositions[index].Rectangle = new Rectangle((int)(pos.X - m_thumbSize.X / 2.0),
                                                                          (int)(pos.Y - m_thumbSize.Y / 2.0),
                                                                          m_thumbSize.X, m_thumbSize.Y);
                    }
                }
            }
        }
Ejemplo n.º 5
0
            public int CompareTo(object obj)
            {
                FanartControlImage image = (FanartControlImage)obj;

                return(this.Position.Y.CompareTo(image.Position.Y));
            }
Ejemplo n.º 6
0
 private void ChangeRectangleSize(int growSize, FanartControlImage img)
 {
     Rectangle pos = new Rectangle();
       pos.X = img.Position.X - (m_thumbSize.X / 2) - (growSize / 2);
       pos.Y = img.Position.Y - (m_thumbSize.Y / 2) - (growSize / 2);
       pos.Width = m_thumbSize.X + growSize;
       pos.Height = m_thumbSize.Y + growSize;
       img.Rectangle = pos;
 }