public static Brush CreateBaseImageParticle(Color color)
        {
            BitmapImage bi = new BitmapImage();

            bi.BeginInit();
            bi.UriSource = new Uri("pack://application:,,,/resources/images/particles/base-particle.png");
            bi.EndInit();

            ColorReplaceEffect effect = new ColorReplaceEffect();

            effect.ColorToOverride = Colors.White;
            effect.ColorReplace    = color;

            RenderTargetBitmap rtb = PrepareRenderTarget(128);

            System.Windows.Shapes.Rectangle visual = new System.Windows.Shapes.Rectangle();
            visual.Fill   = new ImageBrush(bi);
            visual.Effect = effect;

            Size sz = new Size(128, 128);

            visual.Measure(sz);
            visual.Arrange(new Rect(sz));

            rtb.Render(visual);

            return(new ImageBrush(rtb));
        }
示例#2
0
        public static DrawingGroup CreateBaseImage(Base baze, String url, bool withShader = true)
        {
            DrawingGroup g = null;

            baze.SceneMgr.Invoke(new Action(() =>
            {
                BitmapImage bi = new BitmapImage();
                bi.BeginInit();
                bi.UriSource = new Uri(url);
                bi.EndInit();

                g = new DrawingGroup();
                ImageDrawing img = new ImageDrawing();
                img.Rect         = new Rect(baze.Size);

                if (withShader)
                {
                    ColorReplaceEffect effect = new ColorReplaceEffect();
                    effect.ColorToOverride    = Colors.White;
                    effect.ColorReplace       = baze.Owner.GetPlayerColor();

                    RenderTargetBitmap rtb = new RenderTargetBitmap((int)baze.Size.Width * 2, (int)baze.Size.Height * 2, 96, 96, PixelFormats.Pbgra32);

                    System.Windows.Shapes.Rectangle visual = new System.Windows.Shapes.Rectangle();
                    visual.Fill   = new ImageBrush(bi);
                    visual.Effect = effect;

                    Size sz = new Size(baze.Size.Width * 2, baze.Size.Height * 2);
                    visual.Measure(sz);
                    visual.Arrange(new Rect(sz));

                    rtb.Render(visual);
                    img.ImageSource = rtb;
                }
                else
                {
                    img.ImageSource = bi;
                }

                TransformGroup tg = new TransformGroup();
                tg.Children.Add(new TranslateTransform(baze.Position.X, baze.Position.Y));
                g.Transform = tg;
                g.Children.Add(img);
            }));

            return(g);
        }
示例#3
0
        public static DrawingGroup CreateMineImage(SingularityMine mine)
        {
            DrawingGroup g = null;

            mine.SceneMgr.Invoke(new Action(() =>
            {
                BitmapImage bi = new BitmapImage();
                bi.BeginInit();

                bi.UriSource        = new Uri("pack://application:,,,/resources/images/projectiles/mine.png");
                bi.DecodePixelWidth = mine.Radius * 4;
                bi.EndInit();

                g = new DrawingGroup();
                ImageDrawing img = new ImageDrawing();
                img.Rect         = new Rect(new Size(mine.Radius * 2, mine.Radius * 2));

                ColorReplaceEffect effect = new ColorReplaceEffect();
                effect.ColorToOverride    = Colors.White;
                effect.ColorReplace       = mine.Owner.GetPlayerColor();

                RenderTargetBitmap rtb = new RenderTargetBitmap((int)mine.Radius * 2, (int)mine.Radius * 2, 96, 96, PixelFormats.Pbgra32);

                System.Windows.Shapes.Rectangle visual = new System.Windows.Shapes.Rectangle();
                visual.Fill   = new ImageBrush(bi);
                visual.Effect = effect;

                Size sz = new Size(mine.Radius * 2, mine.Radius * 2);
                visual.Measure(sz);
                visual.Arrange(new Rect(sz));

                rtb.Render(visual);
                img.ImageSource = rtb;

                g = new DrawingGroup();
                TransformGroup tg = new TransformGroup();
                tg.Children.Add(new TranslateTransform(mine.Position.X, mine.Position.Y));
                tg.Children.Add(new RotateTransform(mine.Rotation, mine.Radius, mine.Radius));
                g.Transform = tg;
                g.Children.Add(img);
            }));

            return(g);
        }
示例#4
0
        private void CreateBaseImage(Color c)
        {
            BitmapImage bi = new BitmapImage();

            bi.BeginInit();
            bi.UriSource = new Uri("pack://application:,,,/resources/images/base/base_bw_shaded.png");
            bi.EndInit();

            Image img = new Image();

            img.Source = bi;
            img.Width  = 240;
            img.Height = 60;

            ColorReplaceEffect effect = new ColorReplaceEffect();

            effect.ColorToOverride = Colors.White;
            effect.ColorReplace    = c;

            img.Effect = effect;

            baze.Children.Clear();
            baze.Children.Add(img);
        }