亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? watermarker.cs

?? about watermarking for images and text
?? CS
字號:
?using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;

namespace Watermark {

    #region WatermarkPosition
    public enum WatermarkPosition {
        Absolute,
        TopLeft,
        TopRight,
        TopMiddle,
        BottomLeft,
        BottomRight,
        BottomMiddle,
        MiddleLeft,
        MiddleRight,
        Center
    }
    #endregion

    #region Watermarker
    public class Watermarker {

        #region Private Fields
        private Image m_image;
        private Image m_originalImage;
        private Image m_watermark;
        private float m_opacity = 1.0f;
        private WatermarkPosition m_position = WatermarkPosition.Absolute;
        private int m_x = 0;
        private int m_y = 0;
        private Color m_transparentColor = Color.Empty;
        private RotateFlipType m_rotateFlip = RotateFlipType.RotateNoneFlipNone;
        private Padding m_margin = new Padding(0);
        private Font m_font = new Font(FontFamily.GenericSansSerif, 10);
        private Color m_fontColor = Color.Black;
        private float m_scaleRatio = 1.0f;
        #endregion

        #region Public Properties
        /// <summary>
        /// Gets the image with drawn watermarks
        /// </summary>
        [Browsable(false)]
        public Image Image { get { return m_image; } }

        /// <summary>
        /// Watermark position relative to the image sizes. 
        /// If Absolute is chosen, watermark positioning is being done via PositionX and PositionY 
        /// properties (0 by default)\n
        /// </summary>        
        public WatermarkPosition Position { get { return m_position; } set { m_position = value; } }

        /// <summary>
        /// Watermark X coordinate (works if Position property is set to WatermarkPosition.Absolute)
        /// </summary>
        public int PositionX { get { return m_x; } set { m_x = value; } }

        /// <summary>
        /// Watermark Y coordinate (works if Position property is set to WatermarkPosition.Absolute)
        /// </summary>
        public int PositionY { get { return m_y; } set { m_y = value; } }

        /// <summary>
        /// Watermark opacity. Can have values from 0.0 to 1.0
        /// </summary>
        public float Opacity { get { return m_opacity; } set { m_opacity = value; } }

        /// <summary>
        /// Transparent color
        /// </summary>
        public Color TransparentColor { get { return m_transparentColor; } set { m_transparentColor = value; } }

        /// <summary>
        /// Watermark rotation and flipping
        /// </summary>
        public RotateFlipType RotateFlip { get { return m_rotateFlip; } set { m_rotateFlip = value; } }

        /// <summary>
        /// Spacing between watermark and image edges
        /// </summary>
        public Padding Margin { get { return m_margin; } set { m_margin = value; } }

        /// <summary>
        /// Watermark scaling ratio. Must be greater than 0. Only for image watermarks
        /// </summary>
        public float ScaleRatio { get { return m_scaleRatio; } set { m_scaleRatio = value; } }

        /// <summary>
        /// Font of the text to add
        /// </summary>
        public Font Font { get { return m_font; } set { m_font = value; } }

        /// <summary>
        /// Color of the text to add
        /// </summary>
        public Color FontColor { get { return m_fontColor; } set { m_fontColor = value; } }

        
        #endregion

        #region Constructors
        public Watermarker(Image image) {
            LoadImage(image);
        }

        public Watermarker(string filename) {
            LoadImage(Image.FromFile(filename));
        }
        #endregion

        #region Public Methods
        /// <summary>
        /// Resets image, clearing all drawn watermarks
        /// </summary>
        public void ResetImage() {
            m_image = new Bitmap(m_originalImage);
        }

        public void DrawImage(string filename) {
            DrawImage(Image.FromFile(filename));
        }

        public void DrawImage(Image watermark) {

            if (watermark == null)
                throw new ArgumentOutOfRangeException("Watermark");

            if (m_opacity < 0 || m_opacity > 1)
                throw new ArgumentOutOfRangeException("Opacity");

            if (m_scaleRatio <= 0)
                throw new ArgumentOutOfRangeException("ScaleRatio");

            // Creates a new watermark with margins (if margins are not specified returns the original watermark)
            m_watermark = GetWatermarkImage(watermark);

            // Rotates and/or flips the watermark
            m_watermark.RotateFlip(m_rotateFlip);

            // Calculate watermark position
            Point waterPos = GetWatermarkPosition();

            // Watermark destination rectangle
            Rectangle destRect = new Rectangle(waterPos.X, waterPos.Y, m_watermark.Width, m_watermark.Height);

            ColorMatrix colorMatrix = new ColorMatrix(
                new float[][] { 
                    new float[] { 1, 0f, 0f, 0f, 0f},
                    new float[] { 0f, 1, 0f, 0f, 0f},
                    new float[] { 0f, 0f, 1, 0f, 0f},
                    new float[] { 0f, 0f, 0f, m_opacity, 0f},
                    new float[] { 0f, 0f, 0f, 0f, 1}                    
                });

            ImageAttributes attributes = new ImageAttributes();

            // Set the opacity of the watermark
            attributes.SetColorMatrix(colorMatrix);

            // Set the transparent color 
            if (m_transparentColor != Color.Empty) {
                attributes.SetColorKey(m_transparentColor, m_transparentColor);
            }

            // Draw the watermark
            using (Graphics gr = Graphics.FromImage(m_image)) {
                gr.DrawImage(m_watermark, destRect, 0, 0, m_watermark.Width, m_watermark.Height, GraphicsUnit.Pixel, attributes);
            }
        }

        public void DrawText(string text) {
            // Convert text to image, so we can use opacity etc.
            Image textWatermark = GetTextWatermark(text);

            DrawImage(textWatermark);
        }
        #endregion

        #region Private Methods
        private void LoadImage(Image image) {
            m_originalImage = image;
            ResetImage();
        }

        private Image GetTextWatermark(string text) {

            Brush brush = new SolidBrush(m_fontColor);
            SizeF size;

            // Figure out the size of the box to hold the watermarked text
            using (Graphics g = Graphics.FromImage(m_image)) {
                size = g.MeasureString(text, m_font);
            }

            // Create a new bitmap for the text, and, actually, draw the text
            Bitmap bitmap = new Bitmap((int)size.Width, (int)size.Height);
            bitmap.SetResolution(m_image.HorizontalResolution, m_image.VerticalResolution);

            using (Graphics g = Graphics.FromImage(bitmap)) {
                g.DrawString(text, m_font, brush, 0, 0);
            }

            return bitmap;
        }

        private Image GetWatermarkImage(Image watermark) {

            // If there are no margins specified and scale ration is 1, no need to create a new bitmap
            if (m_margin.All == 0 && m_scaleRatio == 1.0f)
                return watermark;
                        
            // Create a new bitmap with new sizes (size + margins) and draw the watermark
            int newWidth = Convert.ToInt32(watermark.Width * m_scaleRatio);
            int newHeight = Convert.ToInt32(watermark.Height * m_scaleRatio);

            Rectangle sourceRect = new Rectangle(m_margin.Left, m_margin.Top, newWidth, newHeight);
            Rectangle destRect = new Rectangle(0, 0, watermark.Width, watermark.Height);

            Bitmap bitmap = new Bitmap(newWidth + m_margin.Left + m_margin.Right, newHeight + m_margin.Top + m_margin.Bottom);
            bitmap.SetResolution(watermark.HorizontalResolution, watermark.VerticalResolution);

            using (Graphics g = Graphics.FromImage(bitmap)) {
                g.DrawImage(watermark, sourceRect,destRect,GraphicsUnit.Pixel);
            }

            return bitmap;
        }

        private Point GetWatermarkPosition() {
            int x = 0;
            int y = 0;

            switch (m_position) {
                case WatermarkPosition.Absolute:
                    x = m_x; y = m_y;
                    break;
                case WatermarkPosition.TopLeft:
                    x = 0; y = 0;
                    break;
                case WatermarkPosition.TopRight:
                    x = m_image.Width - m_watermark.Width; y = 0;
                    break;
                case WatermarkPosition.TopMiddle:
                    x = (m_image.Width - m_watermark.Width) / 2; y = 0;
                    break;
                case WatermarkPosition.BottomLeft:
                    x = 0; y = m_image.Height - m_watermark.Height;
                    break;
                case WatermarkPosition.BottomRight:
                    x = m_image.Width - m_watermark.Width; y = m_image.Height - m_watermark.Height;
                    break;
                case WatermarkPosition.BottomMiddle:
                    x = (m_image.Width - m_watermark.Width) / 2; y = m_image.Height - m_watermark.Height;
                    break;
                case WatermarkPosition.MiddleLeft:
                    x = 0; y = (m_image.Height - m_watermark.Height) / 2;
                    break;
                case WatermarkPosition.MiddleRight:
                    x = m_image.Width - m_watermark.Width; y = (m_image.Height - m_watermark.Height) / 2;
                    break;
                case WatermarkPosition.Center:
                    x = (m_image.Width - m_watermark.Width) / 2; y = (m_image.Height - m_watermark.Height) / 2;
                    break;
                default:
                    break;
            }

            return new Point(x, y);
        }
        #endregion

    }
    #endregion

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久婷婷国产综合精品| www.在线成人| 亚洲女同一区二区| 欧美一区二区精美| 99精品1区2区| 狠狠网亚洲精品| 亚洲成av人影院在线观看网| 久久久精品国产免大香伊| 欧美日韩不卡在线| 99精品国产视频| 国产精品亚洲午夜一区二区三区 | 日韩欧美激情四射| 色999日韩国产欧美一区二区| 国产精品一二三| 日韩福利电影在线观看| 亚洲精品免费一二三区| 欧美一区二区久久| 色一情一伦一子一伦一区| 国产成人av在线影院| 国产一区二区三区在线观看免费 | 色综合激情五月| 国产不卡在线一区| 国产一区在线不卡| 国产一区在线不卡| 国产专区综合网| 国产制服丝袜一区| 韩国精品在线观看| 韩国欧美国产一区| 国产麻豆精品theporn| 国内精品伊人久久久久影院对白| 日本最新不卡在线| 日本少妇一区二区| 日精品一区二区| 秋霞电影一区二区| 看国产成人h片视频| 欧美色综合网站| 91丨国产丨九色丨pron| 99精品欧美一区二区三区小说| 国产乱码精品一区二区三区五月婷| 另类专区欧美蜜桃臀第一页| 久久99九九99精品| 国产在线视频一区二区三区| 国产制服丝袜一区| 国产99久久久精品| av在线不卡免费看| 日本黄色一区二区| 欧美日韩极品在线观看一区| 在线播放视频一区| 日韩欧美第一区| 久久久www成人免费毛片麻豆| 久久久久久日产精品| 国产精品美女久久久久av爽李琼| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 免费高清不卡av| 激情文学综合插| 国v精品久久久网| 91片黄在线观看| 欧美中文字幕久久| 欧美一级片在线| 国产欧美精品一区aⅴ影院| 国产精品另类一区| 亚洲最大色网站| 麻豆精品视频在线观看视频| 国产一区啦啦啦在线观看| 国产白丝精品91爽爽久久| 色综合色狠狠天天综合色| 欧美三级日韩三级国产三级| 日韩精品一区二区三区在线播放 | 久久影院午夜片一区| 国产精品网站在线| 亚洲另类一区二区| 秋霞电影网一区二区| 国产91色综合久久免费分享| 在线亚洲欧美专区二区| 日韩一级视频免费观看在线| 中文字幕乱码亚洲精品一区| 亚洲一区二区三区国产| 国产一区二区按摩在线观看| 91福利国产精品| 久久久99久久| 亚洲免费高清视频在线| 蜜乳av一区二区| 一本大道久久a久久精二百| 欧美成人一区二区| 一区二区三区**美女毛片| 精久久久久久久久久久| 91视视频在线观看入口直接观看www| 欧美日韩三级一区| 国产亚洲视频系列| 亚洲成人一区在线| 大胆欧美人体老妇| 欧美一二区视频| 亚洲欧美视频在线观看| 国产精一品亚洲二区在线视频| 91国产免费观看| 久久精品亚洲麻豆av一区二区| 依依成人综合视频| 成人免费的视频| 日韩网站在线看片你懂的| 亚洲欧美乱综合| 风流少妇一区二区| 日韩欧美区一区二| 亚洲福中文字幕伊人影院| 成人午夜精品一区二区三区| 日韩一区二区三区免费看| 亚洲一区二区欧美日韩| 成人av一区二区三区| 日韩天堂在线观看| 午夜精品福利一区二区三区蜜桃| 成人av动漫网站| 久久男人中文字幕资源站| 日本vs亚洲vs韩国一区三区二区| 色噜噜狠狠一区二区三区果冻| 日本一区二区动态图| 韩国精品主播一区二区在线观看 | 婷婷中文字幕综合| 色婷婷国产精品久久包臀 | 久久精品久久久精品美女| 在线观看一区二区精品视频| 亚洲婷婷综合色高清在线| 高清不卡一区二区在线| 久久精品在线免费观看| 精品中文字幕一区二区小辣椒| 欧美精品丝袜久久久中文字幕| 亚洲高清免费观看| 欧美视频在线观看一区| 亚洲一本大道在线| 欧美午夜不卡在线观看免费| 亚洲综合偷拍欧美一区色| 欧亚洲嫩模精品一区三区| 亚洲女性喷水在线观看一区| 色香蕉成人二区免费| 亚洲女爱视频在线| 色哟哟一区二区在线观看| 一区二区三区日韩欧美精品 | 欧美成人福利视频| 蜜臀精品一区二区三区在线观看| 欧美一区二区视频观看视频| 免费视频一区二区| 精品久久国产老人久久综合| 国内精品视频666| 亚洲国产高清不卡| 成人aa视频在线观看| 中文字幕一区二区5566日韩| 91丝袜美女网| 亚洲h在线观看| 日韩精品一区二区三区在线播放 | 日日摸夜夜添夜夜添精品视频| 制服视频三区第一页精品| 日av在线不卡| 久久一日本道色综合| 成人va在线观看| 亚洲午夜精品17c| 日韩精品一区二区三区在线播放| 国产成人a级片| 一区二区三区四区不卡在线| 7777女厕盗摄久久久| 激情综合色综合久久| 亚洲国产成人一区二区三区| 色综合天天天天做夜夜夜夜做| 亚洲国产综合色| 精品久久一区二区| 成人国产精品免费观看动漫| 亚洲综合久久久久| 精品久久久久久久久久久久久久久 | 蜜桃视频免费观看一区| 国产亚洲精品久| 一本色道久久综合亚洲91| 日韩影院在线观看| 国产色一区二区| 在线观看91视频| 精品亚洲欧美一区| 亚洲人吸女人奶水| 日韩小视频在线观看专区| 成人黄色片在线观看| 水野朝阳av一区二区三区| 日本一区二区三区dvd视频在线| 欧美亚洲自拍偷拍| 国内精品国产成人国产三级粉色| 中文字幕精品一区二区三区精品| 欧美在线观看一区二区| 国产综合色视频| 亚洲国产精品久久久久秋霞影院 | 国产成人在线电影| 性久久久久久久久| 国产精品初高中害羞小美女文| 91麻豆精品国产无毒不卡在线观看| 国产精品一区二区免费不卡| 亚洲成人动漫在线观看| 国产精品麻豆视频| 日韩免费看网站| 亚洲精品成人少妇| 精品国产免费人成电影在线观看四季 | 成人av在线资源网| 久久成人免费网| 亚洲国产视频在线| 中文在线一区二区 | 亚洲精品免费在线播放| 久久综合色8888| 欧美日韩久久一区|