コード例 #1
0
ファイル: NumberService.cs プロジェクト: sheviak/Draw
        /// <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);
        }