/// <summary> /// Устанавливаем в канвас изображение типа Collage.Image /// </summary> /// <param name="img">Изображение типа Collage.Image</param> /// <param name="canvas">Канвас</param> void SetImageToCanvas(Collage.Image image, Canvas canvas) { canvas.Children.Clear(); //удаляем всё, что было внутри var img = new Image(); // создаём визуальный объект изображения img.Source = image.Img; // устанавливаем источник из полученного изображеия canvas.Children.Add(img); // и добавляем в канвас img.Stretch = Stretch.Uniform; //режим растягивания // устанавливаем параметры смещения и размеры в соответствии с полученный Collage.Image img.Width = image.Width; img.Height = image.Height; Canvas.SetLeft(img, image.Left); Canvas.SetTop(img, image.Top); // установка обработчиков событий img.MouseDown += Img_MouseDown; img.MouseMove += Img_MouseMove; img.MouseUp += Img_MouseUp; img.MouseLeave += Img_MouseLeave; img.MouseWheel += Img_MouseWheel; }
private void Canvas_MouseDown(object sender, MouseButtonEventArgs e) { // если мы пребываем в режиме добавления изображения, то начинаем добавлять или заменять изображение в канвасе if (Mode == Mods.Add) { // установа режима ожидания сразу и нормального курсора обратно Mode = Mods.Wait; Cursor = Cursors.Arrow; // определяем канвас, который вызвал событие и принимет изображение var canvas = sender as Canvas; // определяем номер канваса из его имени (canvas1, canvas2, canvas3, canvas4), отсекая первые 6 символов и оставляя лишь цифру int number = int.Parse(canvas.Name.Substring(6)); // получаем текущий коллаж, с которым работаем var clg = Collages[SelectedCollage]; Collage.Image img = null; // если есть изображение, соответствующее этому канвасу, то заменяем его просто if (clg.Images.ContainsKey(number)) { img = clg.Images[number]; img.Img = SelectedNewImage.Source; } else // иначе создаём новое Collage.Image { img = new Collage.Image() { Img = SelectedNewImage.Source, Left = 0, Top = 0, Width = SelectedNewImage.Source.Width, Height = SelectedNewImage.Source.Height }; clg.Images.Add(number, img); } // обновляем данные в самом канвасе SetImageToCanvas(img, canvas); } }