⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawmark.cs

📁 这是asp.net^和Visual C++Sharp编写的串并口通讯的书籍 源代码
💻 CS
字号:
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Drawing2D;

/// <summary>
/// 图片生成水印效果
/// </summary>
public class DrawMark
{
    #region 变量声明
    /// <summary>
    /// 表示水印图片位置的枚举
    /// </summary>
    public enum Location
    {
        /// <summary>
        /// 水印位于源图片左上角
        /// </summary>
        LeftTop,
        /// <summary>
        /// 水印位于源图片左下角
        /// </summary>
        LeftBottom,
        /// <summary>
        /// 水印位于源图片右上角
        /// </summary>
        RightTop,
        /// <summary>
        /// 水印位于源图片右下角
        /// </summary>
        RightBottom,
        /// <summary>
        /// 水印位于源图片中间
        /// </summary>
        Middle
    }
    #endregion

    #region 获取图片
    /// <summary>
    /// 将水印填充到指定的图片
    /// </summary>
    /// <param name="ImagePath">设置源图片路径。</param>
    /// <param name="MarkPath">设置水印图片路径。</param>
    /// <param name="Locus">设置一个值,该值表示水印位于源图片的位置。</param>
    /// <returns></returns>
    public bool GetImage(string ImagePath, string MarkPath, Location Locus)
    {
        File.Copy(ImagePath, ImagePath + ".bak");
        File.Delete(ImagePath);
        Image OriginalImage = Image.FromFile(ImagePath + ".bak");
        Image CopyImage = Image.FromFile(MarkPath);
        if (OriginalImage.Width > CopyImage.Width && OriginalImage.Height > CopyImage.Height)
        {
            Graphics g = Graphics.FromImage(OriginalImage);
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.SmoothingMode = SmoothingMode.HighQuality;
            int x, y;
            switch (Locus)
            {
                case Location.LeftTop:
                    x = 0;
                    y = 0;
                    break;
                case Location.LeftBottom:
                    x = 0;
                    y = OriginalImage.Height - CopyImage.Height;
                    break;
                case Location.RightTop:
                    x = OriginalImage.Width - CopyImage.Width;
                    y = 0;
                    break;
                case Location.RightBottom:
                    x = OriginalImage.Width - CopyImage.Width;
                    y = OriginalImage.Height - CopyImage.Height;
                    break;
                case Location.Middle:
                    x = (OriginalImage.Width - CopyImage.Width) / 2;
                    y = (OriginalImage.Height - CopyImage.Height) / 2;
                    break;
                default:
                    x = OriginalImage.Width - CopyImage.Width;
                    y = OriginalImage.Height - CopyImage.Height;
                    break;
            }
            g.DrawImage(CopyImage, new Rectangle(x, y, CopyImage.Width, CopyImage.Height), 0, 0, CopyImage.Width, CopyImage.Height, GraphicsUnit.Pixel);
            g.Dispose();
            OriginalImage.Save(ImagePath);
            OriginalImage.Dispose();
            CopyImage.Dispose();
            File.Delete(ImagePath + ".bak");
            return true;
        }
        else
        {
            OriginalImage.Dispose();
            CopyImage.Dispose();
            File.Delete(ImagePath + ".bak");
            return false;
        }
    }

    /// <summary>
    /// 获取图片缩略图
    /// </summary>
    /// <param name="ImagePath">设置源图片路径。</param>
    /// <param name="width">设置一个值,该值表示缩略图的宽度。</param>
    public void GetSmallImage(string ImagePath, int width)
    {
        File.Copy(ImagePath, ImagePath + ".bak");
        File.Delete(ImagePath);
        Image OriginalImage = Image.FromFile(ImagePath + ".bak");
        Image ThumbnailImage = OriginalImage.GetThumbnailImage(width, Convert.ToInt32(width * 0.75), null, IntPtr.Zero);
        ThumbnailImage.Save(ImagePath);
        OriginalImage.Dispose();
        ThumbnailImage.Dispose();
        File.Delete(ImagePath + ".bak");
    }
    #endregion
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -