Ejemplo n.º 1
0
        /// <summary>
        /// 合并图片
        /// </summary>
        /// <param name="imgBack">背景图片</param>
        /// <param name="img">需要嵌套的图片</param>
        /// <param name="position">需要嵌套的图片的位置</param>
        /// <returns></returns>
        public static Image CombineImage(Image imgBack, Image img, ImgPosition position, Graphics g = null, float?x = null, float?y = null)
        {
            bool isNeedDispose = false;

            if (g == null)
            {
                g             = Graphics.FromImage(imgBack);
                isNeedDispose = true;
            }

            //呈现质量
            g.SmoothingMode = SmoothingMode.AntiAlias;

            //画需要嵌套的图片
            PointF point = GetPosition(imgBack, img, position, x, y);

            g.DrawImage(img, point.X, point.Y);

            img.Dispose();
            if (isNeedDispose)
            {
                g.Dispose();
            }
            return(imgBack);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 将二维码画在白色背景图上
        /// </summary>
        /// <param name="img">二维码</param>
        /// <returns></returns>
        public static Image CreateWhiteBmp(Image bmp, Image img, ImgPosition imgPosition)
        {
            Graphics g = Graphics.FromImage(bmp);

            //呈现质量
            g.SmoothingMode = SmoothingMode.AntiAlias;

            //定义画布颜色
            g.Clear(Color.White);

            //再画需要嵌套的图片
            PointF point = GetPosition(bmp, img, imgPosition);

            g.DrawImage(img, point.X, point.Y);

            img.Dispose();
            g.Dispose();

            return(bmp);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取需要嵌套的图片的左上角的坐标
        /// </summary>
        /// <param name="imgBack">背景图片</param>
        /// <param name="img">需要嵌套的图片</param>
        /// <param name="position">位置枚举</param>
        /// <returns></returns>
        private static PointF GetPosition(Image imgBack, Image img, ImgPosition position, float?x = null, float?y = null)
        {
            PointF point = new PointF
            {
                X = 0,
                Y = 0
            };

            switch (position)
            {
            case ImgPosition.居中:
                point.X = imgBack.Width / 2 - img.Width / 2;
                point.Y = imgBack.Height / 2 - img.Height / 2;
                break;

            case ImgPosition.左上角:
                break;

            case ImgPosition.右上角:
                point.X = imgBack.Width - img.Width;
                break;

            case ImgPosition.右下角:
                point.X = imgBack.Width - img.Width;
                point.Y = imgBack.Height - img.Height;
                break;

            case ImgPosition.左下角:
                point.Y = imgBack.Height - img.Height;
                break;

            case ImgPosition.自定义:
                point.X = (float)x;
                point.Y = (float)y;
                break;
            }
            return(point);
        }