Esempio n. 1
0
        private void Click()
        {
            var ScreenRectangle = new System.Drawing.Rectangle(
                new System.Drawing.Point(0, 0),
                new System.Drawing.Size((int)(pB_Map.Width), (int)(pB_Map.Height)));

            var MousePosition = pB_Map.PointToClient(Control.MousePosition);

            foreach (var system in GlobalData.Systems)
            {
                var Options = new SystemDrawOptions();
                if (Style.ContainsKey(system))
                {
                    Options = Style[system];
                }


                int Value = ((int)(((WorldOffset - system.Coordinates).Length * ViewDistance) * -1) + 255).Clamp(0, 255);

                var WorldPosition = (system.Coordinates - WorldOffset).RotateY(WorldRotationY);

                var DrawSize = (int)(Value / 50);

                if (Options.Size > 0)
                {
                    DrawSize = Options.Size;
                }

                var ScreenPos = Translate(WorldPosition) + new Vector((ScreenRectangle.Width), (ScreenRectangle.Height)); //new Vector(system.Coordinates.Z, system.Coordinates.X) - Position;

                var DrawRect = new Rectangle((int)((ScreenPos.X - ScreenRectangle.Width / 2)), (int)((ScreenPos.Y - ScreenRectangle.Height / 2)), DrawSize, DrawSize);

                if (DrawRect.Contains(MousePosition))
                {
                    WorldOffset = system.Coordinates;
                    if (!Style.ContainsKey(system))
                    {
                        Style.Add(system, new SystemDrawOptions()
                        {
                            ShowName = true, Color = Color.Blue
                        });
                    }
                    CameraPosition = /*UserData.System.Coordinates + */ new Data.Vector3(0, 0, 40);
                }
            }
            timer_Tick(null, null);
        }
Esempio n. 2
0
        private int DrawSystems(List <Data.System> Systems, Rectangle ScreenRectangle)
        {
            var DefaultOption = new SystemDrawOptions();
            int DrawnSystems  = 0;
            List <Data.System> SystemsWithText = new List <Data.System>();

            var bitmap     = new Bitmap(img);
            var bitmapData = bitmap.LockBits(
                new Rectangle(System.Drawing.Point.Empty, img.Size),
                ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
            var bitsPerPixel = (((int)bitmapData.PixelFormat >> 8) & 0xFF) / 8;
            int bWidth       = bitmap.Width,
                bHeight      = bitmap.Height;

            unsafe
            {
                var pixelDataPointer = (byte *)bitmapData.Scan0;

                foreach (var system in Systems)
                {
                    var Options = DefaultOption;
                    if (Style.ContainsKey(system))
                    {
                        Options = Style[system];
                    }

                    /*int Value = ((int)(((WorldOffset - system.Coordinates).Length * ViewDistance) * -2) + 255).Clamp(50, 255);
                     * if (Value == 0)
                     *  return false;
                     *
                     * var DrawSize = (int)((double)Value / 255 * 20);
                     * if (DrawSize < 10)
                     *  DrawSize = 10;*/
                    int DrawSize = 2;
                    if (Options.Size > 0)
                    {
                        DrawSize = Options.Size;
                    }



                    var DrawRect  = GetSystemScreenRect(system, ScreenRectangle, DrawSize);
                    var CheckRect = new Rectangle(new System.Drawing.Point(ScreenRectangle.X - DrawSize, ScreenRectangle.Y - DrawSize), new System.Drawing.Size(ScreenRectangle.Width + DrawSize * 2, ScreenRectangle.Height + DrawSize * 2));
                    if (DrawRect.IntersectsWith(CheckRect))
                    {
                        // (DrawRect.X < 0 || DrawRect.Y < 0 || DrawRect.Width < 0 || DrawRect.Height < 0) return false;



                        //var sColor = Color.FromArgb(255, 255, 255, 255);
                        //if (Options.Color.A != 0)
                        //    sColor = Options.Color;

                        if (DrawRect.X > 0 && DrawRect.X < bWidth &&
                            DrawRect.Y > 0 && DrawRect.Y < bHeight)
                        {
                            var target = bitmapData.Stride * DrawRect.Y + 0 + DrawRect.X * bitsPerPixel;
                            pixelDataPointer[target]     = (byte)(255 + pixelDataPointer[target]);     //Blue
                            pixelDataPointer[target + 1] = (byte)(255 + pixelDataPointer[target + 1]); //Green
                            pixelDataPointer[target + 2] = (byte)(255 + pixelDataPointer[target + 2]); //Red
                        }
                        //System.Drawing.
                        //graphics.DrawImage(StarImage, DrawRect, );
                        //graphics.FillRectangle(StarBrush, DrawRect);

                        /*for(int x = -(DrawRect.Width / 2); x < DrawRect.Width / 2; x++)
                         * {
                         *  for (int y = -(DrawRect.Height / 2); y < DrawRect.Height / 2; y++)
                         *  {
                         *      int tX = DrawRect.X + x,
                         *          tY = DrawRect.Y + y;
                         *
                         *      if (tX > 0 && tX < bWidth &&
                         *          tY > 0 && tY < bHeight)
                         *      {
                         *          var target = bitmapData.Stride * tY + 0 + tX * bitsPerPixel;
                         *          pixelDataPointer[target] = 255; //Blue
                         *          pixelDataPointer[target + 1] = 255; //Green
                         *          pixelDataPointer[target + 2] = 255; //Red
                         *      }
                         *  }
                         * }*/
                        //pixelDataPointer[target + 3] = 0; // Alpha
                        //img.
                        if (Options.ShowName || Options.Text != null)
                        {
                            SystemsWithText.Add(system);
                        }

                        DrawnSystems++;
                    }
                }


                const int BlurSize = 3;
                const int BlurHalf = 1;
                double[,] blurMatrix = new double[BlurSize, BlurSize]
                {
                    { 0, 0.5, 0 },
                    { 0.5, 1, 0.5 },
                    { 0, 0.5, 0 }
                };
                // Blur

                /*for (int x = 0; x < bWidth; x++)
                 * {
                 *  for (int y = 0; y < bHeight; y++)
                 *  {
                 *      for(int sX = 0; sX < BlurSize; sX++)
                 *      {
                 *          for(int sY = 0; sY < BlurSize; sY++)
                 *          {
                 *              int tX = x + (sX - BlurHalf),
                 *                  tY = y + (sY - BlurHalf);
                 *
                 *              if (tX < 0 || tX >= bWidth ||
                 *                  tY < 0 || tY >= bHeight)
                 *                  continue;
                 *
                 *              var target = bitmapData.Stride * tY + 0 + tX * bitsPerPixel;
                 *              var value = blurMatrix[sX, sY] * 255;
                 *              pixelDataPointer[target] = (byte)(value + pixelDataPointer[target]); //Blue
                 *              pixelDataPointer[target + 1] = (byte)(value + pixelDataPointer[target + 1]); //Green
                 *              pixelDataPointer[target + 2] = (byte)(value + pixelDataPointer[target + 2]); //Red
                 *          }
                 *      }
                 *  }
                 * }*/
            }
            bitmap.UnlockBits(bitmapData);
            img      = bitmap;
            graphics = Graphics.FromImage(img);
            foreach (var system in SystemsWithText)
            {
                var Options = DefaultOption;
                if (Style.ContainsKey(system))
                {
                    Options = Style[system];
                }

                /*int Value = ((int)(((WorldOffset - system.Coordinates).Length * ViewDistance) * -2) + 255).Clamp(50, 255);
                 * if (Value == 0)
                 *  return false;
                 *
                 * var DrawSize = (int)((double)Value / 255 * 20);
                 * if (DrawSize < 10)
                 *  DrawSize = 10;*/
                int DrawSize = 1;
                if (Options.Size > 0)
                {
                    DrawSize = Options.Size;
                }



                var DrawRect  = GetSystemScreenRect(system, ScreenRectangle, DrawSize);
                var CheckRect = new Rectangle(new System.Drawing.Point(ScreenRectangle.X - DrawSize, ScreenRectangle.Y - DrawSize), new System.Drawing.Size(ScreenRectangle.Width + DrawSize * 2, ScreenRectangle.Height + DrawSize * 2));
                if (DrawRect.IntersectsWith(CheckRect))
                {
                    var Pos = DrawRect.Location + DrawRect.Size;
                    if (Options.ShowName)
                    {
                        graphics.DrawString(system.name, System.Drawing.SystemFonts.DefaultFont, StarBrush, Pos);
                        Pos.Y += 15;
                    }

                    if (Options.Text != null)
                    {
                        graphics.DrawString(Options.Text, System.Drawing.SystemFonts.DefaultFont, StarBrush, Pos);
                    }
                }
            }


            return(DrawnSystems);
        }