逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置選擇(9個位置 ==》[X])


常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill

逆天博客:http://dnt.dkil.net

逆天通用水印擴展篇~新增剪貼板系列的功能和手動配置,卸除原基礎不常用的功能:http://www.cnblogs.com/dunitian/p/5377097.html


好幾天沒上QQ了,今天上了個QQ,,額....額...貌似消息還挺多,沒及時回復的還請見諒~~剛好昨天無聊把水印這快封裝出來了,支持圖片水印,文字水印,索引圖水印和非索引圖水印,支持位置選擇(9個位置 ==》[X])。好吧不高興屁話了,軟件是WPF的(只滿足我的需求,如果有需要可以出第個二版本),水印核心代碼封裝了個Helper類(通用:支持Winform,WPF,Web,WP,Win10)軟件共享一下==>http://pan.baidu.com/s/1qWDwv4C 源碼看下面

水印類

    /// <summary>
    /// 水印類(重要參數:原圖類型,水印類型,水印位置,圖片水印路徑,文字水印內容)
    /// </summary>
    public class WaterMark
    {
        #region 基礎屬性設置
        private string _photoType;
        /// <summary>
        /// 原圖類型
        /// </summary>
        public string PhotoType
        {
            get { return _photoType; }
            set { _photoType = value; }
        }

        private WaterMarkTypeEnum _waterMarkType = WaterMarkTypeEnum.NoneMark;
        /// <summary>
        /// 水印類型
        /// </summary>
        public WaterMarkTypeEnum WaterMarkType
        {
            get { return _waterMarkType; }
            set { _waterMarkType = value; }
        } 
        #endregion

        #region 水印效果設置
        private WaterMarkLocationEnum _waterMarkLocation = WaterMarkLocationEnum.BottomRight;
        /// <summary>
        /// 水印位置
        /// </summary>
        public WaterMarkLocationEnum WaterMarkLocation
        {
            get { return _waterMarkLocation; }
            set { _waterMarkLocation = value; }
        }

        private float _transparency = 0.7f;
        /// <summary>
        /// 水印透明度
        /// </summary>
        public float Transparency
        {
            get { return _transparency; }
            set { _transparency = value; }
        } 
        #endregion

        #region 圖片水印設置
        private string _imgPath;
        /// <summary>
        /// 圖片水印路徑
        /// </summary>
        public string ImgPath
        {
            get { return _imgPath; }
            set { _imgPath = value; }
        } 
        #endregion

        #region 文字水印設置
        private string _text = "dunitian";
        /// <summary>
        /// 文字水印內容
        /// </summary>
        public string Text
        {
            get { return _text; }
            set { _text = value; }
        }

        private string _fontFamily = "微軟雅黑";
        /// <summary>
        /// 文字字體
        /// </summary>
        public string FontFamily
        {
            get { return _fontFamily; }
            set { _fontFamily = value; }
        }

        private Brush _brushesColor = Brushes.Black;
        /// <summary>
        /// 文字顏色
        /// </summary>
        public Brush BrushesColor
        {
            get { return _brushesColor; }
            set { _brushesColor = value; }
        }

        private  FontStyle _fontStyle = FontStyle.Regular;
        /// <summary>
        /// 字體樣式
        /// </summary>
        public FontStyle FontStyle
        {
            get { return _fontStyle; }
            set { _fontStyle = value; }
        }

        private float _fontSize = 14f;
        /// <summary>
        /// 字體大小
        /// </summary>
        public float FontSize
        {
            get { return _fontSize; }
            set { _fontSize = value; }
        } 
        #endregion
    }

 水印位置枚舉

    /// <summary>
    /// 水印位子
    /// </summary>
    public enum WaterMarkLocationEnum
    {
        /// <summary>
        /// 頂部居左
        /// </summary>
        TopLeft = 1,
        /// <summary>
        /// 頂部居中
        /// </summary>
        TopCenter = 2,
        /// <summary>
        /// 頂部居右
        /// </summary>
        TopRight = 3,
        /// <summary>
        /// 中部居左
        /// </summary>
        CenterLeft = 4,
        /// <summary>
        /// 中部居中
        /// </summary>
        CenterCenter = 5,
        /// <summary>
        /// 中部居右
        /// </summary>
        CenterRight = 6,
        /// <summary>
        /// 底部居左
        /// </summary>
        BottomLeft = 7,
        /// <summary>
        /// 底部居左
        /// </summary>
        BottomCenter = 8,
        /// <summary>
        /// 底部居左
        /// </summary>
        BottomRight = 9,
    }

 水印類型枚舉

/// <summary>
    /// 水印類型
    /// </summary>
    public enum WaterMarkTypeEnum
    {
        /// <summary>
        /// 文字
        /// </summary>
        Text = 1,
        /// <summary>
        /// 圖片
        /// </summary>
        Image = 2,
        /// <summary>
        /// 無水印
        /// </summary>
        NoneMark = 3
    }

 水印幫助類(自己封裝的,有bug可以像我反饋)

    /// <summary>
    /// 水印幫助類
    /// </summary>
    public class WaterMarkHelper
    {
        #region 設置水印
        /// <summary>
        /// 設置水印
        /// </summary>
        /// <param name="imgPath"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public static Image SetWaterMark(string imgPath, WaterMark model)
        {
            //獲取背景圖
            Image imgSource = Image.FromFile(imgPath);
            //獲取水印圖片
            Image markImg = null;

            //水印檢驗(文字,圖片[路徑下是否存在圖片])
            #region 水印校驗+水印處理
            if (model == null)
            {
                return null;
            }
            //看看原圖是否存在
            if (!System.IO.File.Exists(imgPath))
            {
                return null;
            }
            //根據水印類型校驗+水印處理
            switch (model.WaterMarkType)
            {
                case WaterMarkAPP.Enums.WaterMarkTypeEnum.Text:
                    if (string.IsNullOrEmpty(model.Text))
                    {
                        return null;
                    }
                    else
                    {
                        markImg = TextToImager(model);//水印處理-如果是文字就轉換成圖片
                    }
                    break;
                case WaterMarkAPP.Enums.WaterMarkTypeEnum.Image:
                    if (!System.IO.File.Exists(model.ImgPath))
                    {
                        return null;
                    }
                    else
                    {
                        //獲得水印圖像           
                        markImg = Image.FromFile(model.ImgPath);
                    }
                    break;
                case WaterMarkAPP.Enums.WaterMarkTypeEnum.NoneMark:
                    return imgSource;
            }
            #endregion

            #region 創建顏色矩陣
            //創建顏色矩陣
            float[][] ptsArray ={ 
                                 new float[] {1, 0, 0, 0, 0},
                                 new float[] {0, 1, 0, 0, 0},
                                 new float[] {0, 0, 1, 0, 0},
                                 new float[] {0, 0, 0, model.Transparency, 0}, //注意:0.0f為完全透明,1.0f為完全不透明
                                 new float[] {0, 0, 0, 0, 1}};
            ColorMatrix colorMatrix = new ColorMatrix(ptsArray);
            //新建一個Image屬性
            ImageAttributes imageAttributes = new ImageAttributes();
            //將顏色矩陣添加到屬性
            imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Default);
            #endregion

            //原圖格式檢驗+水印
            #region 原圖格式檢驗+水印

            //判斷是否是索引圖像格式
            if (imgSource.PixelFormat == PixelFormat.Format1bppIndexed || imgSource.PixelFormat == PixelFormat.Format4bppIndexed || imgSource.PixelFormat == PixelFormat.Format8bppIndexed)
            {
                #region 索引圖片,轉成位圖再加圖片
                //轉成位圖,這步很重要 
                Bitmap bitmap = new Bitmap(imgSource.Width, imgSource.Height);
                Graphics graphic = Graphics.FromImage(bitmap);

                #region 縮放處理
                //如果原圖小於水印圖片 等比縮放水印圖
                if (markImg.Width >= imgSource.Width || markImg.Height >= imgSource.Height)
                {
                    markImg = ImageShrink(imgSource, markImg);
                }
                #endregion

                #region 水印位置
                //水印位置
                int x;
                int y;
                WaterMarkLocations(model, imgSource, markImg, out x, out y);
                #endregion

                //將原圖畫在位圖上
                graphic.DrawImage(imgSource, new Point(0, 0));

                //將水印加在位圖上
                graphic.DrawImage(markImg, new Rectangle(x, y, markImg.Width, markImg.Height), 0, 0, markImg.Width, markImg.Height, GraphicsUnit.Pixel, imageAttributes);

                graphic.Dispose();
                return bitmap;
                #endregion
            }
            else
            {
                #region 非索引圖片,直接在上面加上水印
                Graphics graphic = Graphics.FromImage(imgSource);

                #region 縮放處理
                //如果原圖小於水印圖片 等比縮放水印圖
                if (markImg.Width >= imgSource.Width || markImg.Height >= imgSource.Height)
                {
                    markImg = ImageShrink(imgSource, markImg);
                }
                #endregion

                #region 水印位置
                //水印位置
                int x;
                int y;
                WaterMarkLocations(model, imgSource, markImg, out x, out y);
                #endregion

                //將水印加在原圖上
                graphic.DrawImage(markImg, new Rectangle(x, y, markImg.Width, markImg.Height), 0, 0, markImg.Width, markImg.Height, GraphicsUnit.Pixel, imageAttributes);

                graphic.Dispose();
                return imgSource;
                #endregion
            }
            #endregion
        } 
        #endregion

        #region 水印處理-文字轉圖片
        /// <summary>
        /// 水印處理-文字轉圖片
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private static Image TextToImager(WaterMark model)
        {
            Font f = new Font(model.FontFamily, model.FontSize, model.FontStyle);
            Bitmap fbitmap = new Bitmap(Encoding.GetEncoding("GBK").GetByteCount(model.Text) / 2 * f.Height, f.Height);
            Graphics gh = Graphics.FromImage(fbitmap);//創建一個畫板;
            gh.SmoothingMode = SmoothingMode.AntiAlias;
            gh.DrawString(model.Text, f, model.BrushesColor, 0, 0);//畫字符串
            return fbitmap as Image;
        }
        #endregion

        #region 水印位置
        /// <summary>
        /// 水印位置
        /// </summary>
        /// <param name="model"></param>
        /// <param name="imgSource"></param>
        /// <param name="markImg"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        private static void WaterMarkLocations(WaterMark model, Image imgSource, Image markImg, out int x, out int y)
        {
            x = 0;
            y = 0;
            switch (model.WaterMarkLocation)
            {
                case WaterMarkLocationEnum.TopLeft:
                    x = 0;
                    y = 0;
                    break;
                case WaterMarkLocationEnum.TopCenter:
                    x = imgSource.Width / 2 - markImg.Width / 2;
                    y = 0;
                    break;
                case WaterMarkLocationEnum.TopRight:
                    x = imgSource.Width - markImg.Width;
                    y = 0;
                    break;
                case WaterMarkLocationEnum.CenterLeft:
                    x = 0;
                    y = imgSource.Height / 2 - markImg.Height / 2;
                    break;
                case WaterMarkLocationEnum.CenterCenter:
                    x = imgSource.Width / 2 - markImg.Width / 2;
                    y = imgSource.Height / 2 - markImg.Height / 2;
                    break;
                case WaterMarkLocationEnum.CenterRight:
                    x = imgSource.Width - markImg.Width;
                    y = imgSource.Height / 2 - markImg.Height / 2;
                    break;
                case WaterMarkLocationEnum.BottomLeft:
                    x = 0;
                    y = imgSource.Height - markImg.Height;
                    break;
                case WaterMarkLocationEnum.BottomCenter:
                    x = imgSource.Width / 2 - markImg.Width / 2;
                    y = imgSource.Height - markImg.Height;
                    break;
                case WaterMarkLocationEnum.BottomRight:
                    x = imgSource.Width - markImg.Width;
                    y = imgSource.Height - markImg.Height;
                    break;
            }
        }
        #endregion

        #region 縮放水印
        /// <summary>
        /// 等比縮放水印圖(縮小到原圖的1/3)
        /// </summary>
        /// <param name="imgSource"></param>
        /// <param name="successImage"></param>
        /// <returns></returns>
        private static Image ImageShrink(Image imgSource, Image markImg)
        {
            int w = 0;
            int h = 0;

            Image.GetThumbnailImageAbort callb = null;

            //對水印圖片生成縮略圖,縮小到原圖的1/3(以短的一邊為准)                     
            if (imgSource.Width < imgSource.Height)
            {
                w = imgSource.Width / 3;
                h = markImg.Height * w / markImg.Width;
            }
            else
            {
                h = imgSource.Height / 3;
                w = markImg.Width * h / markImg.Height;
            }
            markImg = markImg.GetThumbnailImage(w, h, callb, new System.IntPtr());
            return markImg;
        }
        #endregion
    }

  簡單調用:

文字水印調用:

        /// <summary>
        /// 文字水印調用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //給水印對象賦對應的值
            WaterMark waterMark = new WaterMark();
            waterMark.WaterMarkType = Enums.WaterMarkTypeEnum.Text;
            waterMark.Transparency = 0.7f;
            waterMark.Text = "dunitian.cnblogs.com";
            waterMark.FontStyle = System.Drawing.FontStyle.Bold;
            waterMark.FontFamily = "Consolas";
            waterMark.FontSize = 20f;
            waterMark.BrushesColor = System.Drawing.Brushes.YellowGreen;
            waterMark.WaterMarkLocation = Enums.WaterMarkLocationEnum.CenterCenter;

            //調用
            Image successImage = WaterMarkHelper.SetWaterMark("text.png", waterMark);
            //保存
            successImage.Save("text1.png", System.Drawing.Imaging.ImageFormat.Png);

            MessageBox.Show("請查看軟件根目錄", "成功");
        }

  圖片水印調用:

/// <summary>
        /// 圖片水印調用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            //給水印對象賦對應的值
            WaterMark waterMark = new WaterMark();
            waterMark.WaterMarkType = Enums.WaterMarkTypeEnum.Image;
            waterMark.ImgPath = "水印.png";
            waterMark.WaterMarkLocation = Enums.WaterMarkLocationEnum.CenterCenter;
            waterMark.Transparency = 0.7f;

            //調用
            Image successImage = WaterMarkHelper.SetWaterMark("text.png", waterMark);
            //保存
            successImage.Save("text2.png", System.Drawing.Imaging.ImageFormat.Png);

            MessageBox.Show("請查看軟件根目錄","成功");
        }

  軟件源碼:(helper類不是最新,用上文的helper類)

 (調用部分我做了一個通用apidemo)==>http://pan.baidu.com/s/1gd1300z

 

namespace WaterMarkAPP
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        #region 按鈕事件
        /// <summary>
        /// 單文水印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnFont_Click(object sender, RoutedEventArgs e)
        {
            WaterMark waterMark = WaterMarkFont();
            DIVWaterMark(waterMark);
        }

        /// <summary>
        /// 批文水印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnFonts_Click(object sender, RoutedEventArgs e)
        {
            WaterMark waterMark = WaterMarkFont();
            DIVWaterMarks(waterMark);
        }

        /// <summary>
        /// 單圖水印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnImage_Click(object sender, RoutedEventArgs e)
        {
            WaterMark waterMark = WaterMarkImage();
            DIVWaterMark(waterMark);
        }

        /// <summary>
        /// 批圖水印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnImages_Click(object sender, RoutedEventArgs e)
        {
            WaterMark waterMark = WaterMarkImage();
            DIVWaterMarks(waterMark);
        } 
        #endregion

        #region 關閉程序
        /// <summary>
        /// 關閉程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Environment.Exit(0);
        }
        #endregion

        #region 窗體拖動
        /// <summary>
        /// 窗體拖動
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DragWindow(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                DragMove();
            }
        }
        #endregion

        #region 版權系列
        private void TextBlock_MouseLeave(object sender, MouseEventArgs e)
        {
            Process.Start("http://dunitian.cnblogs.com/");
        }

        private void TextBlock_MouseLeave_1(object sender, MouseEventArgs e)
        {
            Process.Start("http://tieba.baidu.com/f?kw=毒逆天");
        }

        private void TextBlock_MouseLeave_2(object sender, MouseEventArgs e)
        {
            Process.Start("http://1054186320.qzone.qq.com/");
        }
        #endregion

        #region 軟件代碼(水印核心代碼請看Helper類,最簡潔的調用請看APIDemo文件夾里面的內容)

        #region 水印預設
        /// <summary>
        /// 水印文字預設
        /// </summary>
        /// <returns></returns>
        private static WaterMark WaterMarkFont()
        {
            WaterMark waterMark = new WaterMark();
            waterMark.WaterMarkType = Enums.WaterMarkTypeEnum.Text;
            waterMark.Transparency = 0.7f;
            waterMark.Text = "dunitian.cnblogs.com";
            waterMark.FontStyle = System.Drawing.FontStyle.Bold;
            waterMark.FontFamily = "Consolas";
            waterMark.FontSize = 20f;
            waterMark.BrushesColor = System.Drawing.Brushes.YellowGreen;
            waterMark.WaterMarkLocation = Enums.WaterMarkLocationEnum.CenterCenter;
            return waterMark;
        }

        /// <summary>
        /// 圖片水印預設
        /// </summary>
        /// <returns></returns>
        private static WaterMark WaterMarkImage()
        {
            WaterMark waterMark = new WaterMark();
            waterMark.WaterMarkType = Enums.WaterMarkTypeEnum.Image;
            waterMark.ImgPath = "水印.png";
            waterMark.WaterMarkLocation = Enums.WaterMarkLocationEnum.BottomRight;
            waterMark.Transparency = 0.7f;
            return waterMark;
        }
        #endregion

        #region 水印操作
        /// <summary>
        /// 單個水印操作
        /// </summary>
        /// <param name="waterMark"></param>
        private static void DIVWaterMark(WaterMark waterMark)
        {
            #region 必須參數獲取
            OpenFileDialog dialog = new OpenFileDialog
            {
                Filter = "png(*.png)|*.png|jpg(*.jpg)|*.jpg|bmp(*.bmp)|*.bmp|gif(*.gif)|*.gif|jpeg(*.jpeg)|*.jpeg",
                Title = "打開一張圖片"
            };
            if (dialog.ShowDialog() != true)
            {
                return;
            }

            //圖片路徑
            string filePath = dialog.FileName;
            //文件名
            string fileName = System.IO.Path.GetFileNameWithoutExtension(filePath);
            //圖片所處目錄
            string dirPath = System.IO.Path.GetDirectoryName(filePath);
            //存放目錄
            string savePath = dirPath + "\\DNTWaterMark";
            //是否存在,不存在就創建
            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }
            #endregion

            #region 水印操作
            Image successImage = WaterMarkHelper.SetWaterMark(filePath, waterMark);
            if (successImage != null)
            {
                //保存圖片(不管打不打開都保存)
                successImage.Save(savePath + "\\" + fileName + ".png", System.Drawing.Imaging.ImageFormat.Png);
                //是否打開目錄
                MessageBoxResult result = MessageBox.Show("水印成功!是否打開目錄?", "逆天友情提醒", MessageBoxButton.YesNo);
                if (result == MessageBoxResult.Yes)
                {
                    System.Diagnostics.Process.Start("explorer.exe ", savePath);//打開保存后的路徑
                }
            }
            else
            {
                MessageBox.Show("水印失敗!請檢查原圖和水印圖!", "逆天友情提醒");
            }
            #endregion
        }

        /// <summary>
        /// 批量水印操作
        /// </summary>
        /// <param name="waterMark"></param>
        private void DIVWaterMarks(WaterMark waterMark)
        {
            System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog
            {
                Description = "選擇你要批量水印的圖片目錄"
            };
            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string[] files = Directory.GetFiles(dialog.SelectedPath);
                if (files.Length <= 0)
                {
                    return;
                }

                #region 存儲專用
                //圖片所處目錄
                string dirPath = System.IO.Path.GetDirectoryName(files[0]);
                //存放目錄
                string savePath = dirPath + "\\DNTWaterMark";
                //是否存在,不存在就創建
                if (!Directory.Exists(savePath))
                {
                    Directory.CreateDirectory(savePath);
                }
                #endregion

                int num = 0;//計數用
                foreach (string filePath in files)
                {
                    //文件名
                    string fileName = System.IO.Path.GetFileNameWithoutExtension(filePath);

                    Image successImage = WaterMarkHelper.SetWaterMark(filePath, waterMark);
                    if (successImage != null)
                    {
                        //保存圖片
                        successImage.Save(savePath + "\\" + fileName + ".png", System.Drawing.Imaging.ImageFormat.Png);
                        num++;
                    }
                }

                //是否打開目錄
                MessageBoxResult result = MessageBox.Show("逆天友情提醒:已轉換 " + num + " 張圖片~是否打開目錄?", "轉換狀態", MessageBoxButton.YesNo);
                if (result == MessageBoxResult.Yes)
                {
                    System.Diagnostics.Process.Start("explorer.exe ", savePath);//打開保存后的路徑
                }
            }
        }
        #endregion

        #endregion
    }
}

  

<Window x:Class="WaterMarkAPP.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="水印工具" Height="545" Width="298" Background="Transparent" AllowsTransparency="True" 
        WindowStyle="None" WindowStartupLocation="CenterScreen" MouseLeftButtonDown="DragWindow" Icon="1.ico">

    <!--快樂玩耍:DIV一個手機-->
    <!--手機整體-->
    <Border BorderBrush="Green" 
            Background="Black"
            BorderThickness="4"
            CornerRadius="10,10,10,10">
        <Grid>
            <!--主屏幕-->
            <Border BorderBrush="Gray" 
                BorderThickness="2"
                Margin="10,50,10,40">
                <Grid Background="#FF151515">
                    <Grid.RowDefinitions>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                    </Grid.RowDefinitions>
                    <TextBlock FontFamily="微軟雅黑">對不起,系統已掛請聯系逆天重裝Win10!</TextBlock>
                    <Button Grid.Row="1" Opacity="0.6"  HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Width="100" Click="BtnFont_Click">單文水印</Button>
                    <Button Grid.Row="2" Opacity="0.6"  HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Width="100" Click="BtnImage_Click">單圖水印</Button>
                    <Button Grid.Row="3" Opacity="0.6"  HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Width="100" Click="BtnFonts_Click">批文水印</Button>
                    <Button Grid.Row="4" Opacity="0.6"  HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Width="100" Click="BtnImages_Click">批圖水印</Button>
                    <Button Grid.Row="5" Opacity="0.6"  HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Width="100" Click="Button_Click">關閉程序</Button>
                </Grid>
            </Border>
            <!--底部-->
            <Border BorderBrush="Black" 
                BorderThickness="2"
                CornerRadius="0,0,10,10"
                VerticalAlignment="Bottom"
                Height="40">
                <!--底部按鍵-->
                <Grid>
                    <TextBlock Text="毒" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="80,0,0,0" Width="20" Foreground="Gray" MouseLeave="TextBlock_MouseLeave" />
                    <TextBlock Text="逆" HorizontalAlignment="Center" VerticalAlignment="Center" Width="20" Foreground="Gray"  MouseLeave="TextBlock_MouseLeave_1"/>
                    <TextBlock Text="天" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,80,0" Width="20" Foreground="Gray"  MouseLeave="TextBlock_MouseLeave_2"/>
                </Grid>
            </Border>
        </Grid>
    </Border>
</Window>

 效果:

V1.0源碼下載:http://pan.baidu.com/s/1gd1300z

最新源碼:https://github.com/dunitian/DNTLive/tree/master/Software/WaterMarkAPP


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM