/// <summary> /// Создание изображения для нейросети /// </summary> /// <param name="canvas">Canvas</param> /// <param name="canvasWidth">Ширина сanvas</param> /// <param name="canvasHeight">Высота сanvas</param> /// <param name="sizeImg">Размер выходного изображения</param> /// <param name="rotate">Угол поворота</param> /// <param name="shiftX">Смещение по оси Х</param> /// <param name="shiftY">Смещение по оси У</param> /// <param name="scaleX">Масштабирование по оси Х</param> /// <param name="scaleY">Масштабирование по оси У</param> /// <param name="skewX">Наклон элемента вдоль оси Х</param> /// <param name="skewY">Наклон элемента вдоль оси У</param> /// <returns>Изображение в формате BitmapSource</returns> public BitmapSource GetBitmapNumber( Canvas canvas, int canvasWidth, int canvasHeight, int sizeImg, int rotate, int shiftX, int shiftY, double scaleX, double scaleY, int skewX, int skewY) { var newCanvas = canvas.GetCopy(); TransformGroup group = new TransformGroup(); if (rotate != 0) { group.RotateTransform(canvasWidth, canvasHeight, rotate); } if (shiftX != 0 || shiftY != 0) { group.TranslateTransform(shiftX, shiftY); } if (scaleX != 0 || scaleY != 0) { group.ScaleTransform(canvasWidth, canvasHeight, scaleX, scaleY); } if (skewX != 0 || skewY != 0) { group.SkewTransform(canvasWidth, canvasHeight, skewX, skewY); } newCanvas.TransformGroup(group); var img = newCanvas .CreateImage() .ConvertToBlackWhite() .ScaleImage(sizeImg, sizeImg) .BitmapToBitmapSource(); return(img); }