常用技能: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);}#endregionint 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

逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])...相关推荐

  1. MFC,QT与WinForm,WPF简介

    编程语言的组成 编程语言做为一种语言自然和英语这些自然语言有类似的地方.学英语时我们知道要先记26个字母,然后单词及其发音,接下来就是词组,句子.反正简单的说就是记单词,熟悉词法,句法.接下来就是应用 ...

  2. python 做网站用服务器_Python实现简单的Web服务器 Part2—支持动态网站

    1. 什么是CGI? CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程 ...

  3. 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

    毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如 ...

  4. 关于软件界面设计、控件颜色搭配、一些实用建议(偷懒技巧)总结——针对C# WinForm/WPF技术

    之前的文章讲了很多控件包的用法,我们做C#WinForm工程师的,基本都是做上位机的,很多都是公司没有专门的设计团队,界面做成什么样,基本全凭自己审美. 但我们只是个程序员,又不懂设计,不可能在界面设 ...

  5. Buuctf -web wp汇总(三)

    Buuctf -web wp汇总(一):链接 Buuctf -web wp汇总(二):链接 Buuctf -web wp汇总(三):链接 文章目录 [WUSTCTF2020]朴实无华 [WUSTCTF ...

  6. Winform嵌入Web网页-CefSharp组件

    Winform嵌入Web网页-CefSharp组件 WebBrower组件是基于本地操作系统的IE浏览器的,CSS解析和兼容性不太友好,一般我们不推荐使用.这里我们采用的是CefSharp这个开源组件 ...

  7. 使用Java实现支持视频点播的WEB服务器

    使用Java实现支持视频点播的WEB服务器 一.项目简介: JAVA语言是一种可移植的,简单的,健壮的嵌入式语言.并且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分容易地建立一个小型I ...

  8. Java语言实现支持视频点播的WEB服务器

    java语言实现支持视频点播的WEB服务器 一.项目简介: JAVA语言是一种可移植的,简单的,健壮的嵌入式语言.并且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分轻易地建立一个小型I ...

  9. WPF结构、图形支持与DirectX学习

    Windows 呈现基础(Windows Presentation Foundation,WPF)是一个用于Windows平台的全新的图形显示系统.WPF是针对.NET而设计的,它受现代显示技术,如H ...

最新文章

  1. 2021 年高教社杯全国大学生数学建模竞赛A题分析
  2. 不懂 Zookeeper?没关系,看这篇就够了!
  3. 读完这本书,我做了一个APP
  4. 如何使用Openfiler为VMware ESX设置一个免费的iSCSI或NAS储存系统
  5. python csv文件创建时间_记录 python 根据csv文件自动创建表插入数据
  6. Java核心(三)并发中的线程同步与锁
  7. C# Socket系列二 简单的创建 socket 通信
  8. Lodop 打印控件
  9. JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解
  10. 使用HTML5,画布和开放数据创建全球降水(雨)可视化
  11. webapi 找到了与请求匹配的多个操作(ajax报500,4的错误)
  12. redirect_uri 域名与后配置不一致是什么意思_免费 amp; 无限的域名/企业邮箱
  13. MySQL性能调优my.cnf详解
  14. npm下载地址的查询与切换
  15. JS === 实现多个光标跟随事件
  16. 久邦数码(3G门户)面试
  17. android电视+dlna,如何开启电视dlna功能(最简单最实用的多屏互动)
  18. JetBrains 全家桶的全流程详解
  19. 如何判断2的n次方?用四种方式来扒一扒。
  20. 理解COCO的评价指标:AP,AP50,AP70,mAP,AP[.50:.05:.95]

热门文章

  1. tcpdump 抓取icmp数据包
  2. java外观设计修改_Java设计模式之外观模式和装饰器模式的设计(精选)
  3. 猜拳游戏c语言代码流程图,这是一个猜拳游戏的程序 大家有更好的解决方法么?...
  4. python配置opencv最简单_(Python)从零开始,简单快速学机器仿人视觉Opencv—第二节:OpenCV的视频操作...
  5. java实现单词替换_java – 正则表达式将空格和单词替换为单词的toFirstUpper
  6. 【 MATLAB 】信号处理工具箱之波形产生函数 tripuls
  7. innodb表 手工导入导出
  8. Pycharm+Django搭建第一个Python Web程序
  9. 深入了解db file parallel read等待事件
  10. CentOS7.0下编译安装Nginx 1.10.0