public SkinElementControl(SkinController skinController, SkinElement skinElement)
 {
     SkinController = skinController;
     SkinElement = skinElement;
     Focusable = true;
     Canvas.SetLeft(this, skinElement.X);
     Canvas.SetTop(this, skinElement.Y);
     Template = (ControlTemplate) Application.Current.TryFindResource("ThumbTemplate");
     PreviewMouseDown += OnPreviewMouseDown;
     PreviewMouseUp += OnPreviewMouseUp;
     PreviewKeyDown += OnPreviewKeyDown;
     PreviewKeyUp += OnPreviewKeyUp;
     DragDelta += OnDragDelta;
     MouseEnter += OnMouseEnter;
     MouseLeave += OnMouseLeave;
     DrawNormal();
 }
Esempio n. 2
0
        public void SaveImageMap(SkinElement element)
        {
            SkinArtImage artBgMap = null;
            if (element.ColorPositions.Count == 0) return;
            switch (element.GetType().Name) {
                case "SkinWindow": artBgMap = ((SkinWindow) element).Art.Images.FirstOrDefault(t => t.Type == "MapImage"); break;
            }
            if (artBgMap == null) return;

            var imageMap = (BitmapImage) Core.GetImageSourceFromFileName(GetFullPath(artBgMap.Path));
            var bmp = Core.BitmapImage2Bitmap(imageMap);
            bmp = new Bitmap(bmp.Width, bmp.Height);
            using (var g = Graphics.FromImage(bmp)) {
                g.Clear(Color.FromArgb(255, 1, 1, 1));
                foreach (var pos in element.ColorPositions) {
                    g.FillRectangle(
                            new SolidBrush(pos.MapColor),
                            (int) pos.X,
                            (int) pos.Y,
                            (int) pos.Width,
                            (int) pos.Height
                        );
                }
            }
            bmp.Save(GetFullPath(artBgMap.Path), ImageFormat.Png);
        }
Esempio n. 3
0
        private void RebuildImageMap(SkinArtImage artBgMap, SkinElement element)
        {
            element.ColorPositions.Clear();

            var imageMap = (BitmapImage) Core.GetImageSourceFromFileName(GetFullPath(artBgMap.Path));
            var bmp = Core.BitmapImage2Bitmap(imageMap);

            var transparentColor = bmp.GetPixel(0, 0);
            AppProgressBarController.SetValue(0, bmp.Height, "Analyzing image map...");
            AppProgressBarController.Show();
            var i = 0;
            for (var y = 0; y < imageMap.PixelHeight; y++) {
                i++;
                if (i%10 == 0) {
                    AppProgressBarController.SetValue(i, bmp.Height, "Analyzing image map...");
                    AppProgressBarController.DoEvents();
                }
                for (var x = 0; x < imageMap.PixelWidth; x++) {
                    //  Получаем цвет фона карты
                    var pixel = bmp.GetPixel(x, y);
                    if (x == 0 && y == 0) {
                        transparentColor = Color.FromArgb(pixel.A, pixel.R, pixel.G, pixel.B);
                        continue;
                    }
                    var currentPixelColor = Color.FromArgb(pixel.A, pixel.R, pixel.G, pixel.B);
                    if (currentPixelColor != transparentColor) {
                        if (element.ColorPositions.Any(t => t.MapColor == currentPixelColor)) {
                            var pos = element.ColorPositions.First(t => t.MapColor == currentPixelColor);
                            pos.Width = x > pos.X + pos.Width - 1 ? x - pos.X + 1 : pos.Width;
                            pos.Height = y > pos.Y + pos.Height - 1 ? y - pos.Y + 1 : pos.Height;
                        } else {
                            element.ColorPositions.Add(new ColorPosition { MapColor = currentPixelColor, X = x, Y = y });
                        }
                    }
                }
            }
            AppProgressBarController.Hide();
        }
Esempio n. 4
0
 public void DrawElement(SkinElement element)
 {
     switch (element.GetType().Name) {
         case "SkinWindow":
             RedrawWindow((SkinWindow) element);
             break;
         case "SkinButton":
             RedrawButton((SkinButton) element);
             break;
         case "SkinComboBox":
             RedrawComboBox((SkinComboBox) element);
             break;
         case "SkinSlider":
             RedrawSlider((SkinSlider) element);
             break;
     }
 }