首页 后端开发 C#.Net教程 C#图片处理示例(裁剪,缩放,清晰度,水印)

C#图片处理示例(裁剪,缩放,清晰度,水印)

Nov 10, 2016 am 09:50 AM

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.IO;  
using System.Drawing;  
using System.Drawing.Drawing2D;  
using System.Drawing.Imaging;  
   
namespace WuJian.Common  
{  
  
    public class Image  
    {  
        #region 正方型裁剪并缩放  
   
        /// <summary>  
        /// 正方型裁剪  
        /// 以图片中心为轴心,截取正方型,然后等比缩放  
        /// 用于头像处理  
        /// </summary>  
        /// <remarks>吴剑 2012-08-08</remarks>  
        /// <param name="fromFile">原图Stream对象</param>  
        /// <param name="fileSaveUrl">缩略图存放地址</param>  
        /// <param name="side">指定的边长(正方型)</param>  
        /// <param name="quality">质量(范围0-100)</param>  
        public static void CutForSquare(System.IO.Stream fromFile, string fileSaveUrl, int side, int quality)  
        {  
            //创建目录  
            string dir = Path.GetDirectoryName(fileSaveUrl);  
            if (!Directory.Exists(dir))  
                Directory.CreateDirectory(dir);  
   
            //原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)  
            System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFile, true);  
   
            //原图宽高均小于模版,不作处理,直接保存  
            if (initImage.Width <= side && initImage.Height <= side)  
            {  
                initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);  
            }  
            else 
            {  
                //原始图片的宽、高  
                int initWidth = initImage.Width;  
                int initHeight = initImage.Height;  
   
                //非正方型先裁剪为正方型  
                if (initWidth != initHeight)  
                {  
                    //截图对象  
                    System.Drawing.Image pickedImage = null;  
                    System.Drawing.Graphics pickedG = null;  
   
                    //宽大于高的横图  
                    if (initWidth > initHeight)  
                    {  
                        //对象实例化  
                        pickedImage = new System.Drawing.Bitmap(initHeight, initHeight);  
                        pickedG = System.Drawing.Graphics.FromImage(pickedImage);  
                        //设置质量  
                        pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;  
                        pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
                        //定位  
                        Rectangle fromR = new Rectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight);  
                        Rectangle toR = new Rectangle(0, 0, initHeight, initHeight);  
                        //画图  
                        pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);  
                        //重置宽  
                        initWidth = initHeight;  
                    }  
                    //高大于宽的竖图  
                    else 
                    {  
                        //对象实例化  
                        pickedImage = new System.Drawing.Bitmap(initWidth, initWidth);  
                        pickedG = System.Drawing.Graphics.FromImage(pickedImage);  
                        //设置质量  
                        pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;  
                        pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
                        //定位  
                        Rectangle fromR = new Rectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth);  
                        Rectangle toR = new Rectangle(0, 0, initWidth, initWidth);  
                        //画图  
                        pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);  
                        //重置高  
                        initHeight = initWidth;  
                    }  
   
                    //将截图对象赋给原图  
                    initImage = (System.Drawing.Image)pickedImage.Clone();  
                    //释放截图资源  
                    pickedG.Dispose();  
                    pickedImage.Dispose();  
                }  
   
                //缩略图对象  
                System.Drawing.Image resultImage = new System.Drawing.Bitmap(side, side);  
                System.Drawing.Graphics resultG = System.Drawing.Graphics.FromImage(resultImage);  
                //设置质量  
                resultG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;  
                resultG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
                //用指定背景色清空画布  
                resultG.Clear(Color.White);  
                //绘制缩略图  
                resultG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, side, side), new System.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel);  
   
                //关键质量控制  
                //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff  
                ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();  
                ImageCodecInfo ici = null;  
                foreach (ImageCodecInfo i in icis)  
                {  
                    if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")  
                    {  
                        ici = i;  
                    }  
                }  
                EncoderParameters ep = new EncoderParameters(1);  
                ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);  
   
                //保存缩略图  
                resultImage.Save(fileSaveUrl, ici, ep);  
   
                //释放关键质量控制所用资源  
                ep.Dispose();  
   
                //释放缩略图资源  
                resultG.Dispose();  
                resultImage.Dispose();  
   
                //释放原始图片资源  
                initImage.Dispose();  
            }  
        }  
  
        #endregion  
  
        #region 自定义裁剪并缩放  
   
        /// <summary>  
        /// 指定长宽裁剪  
        /// 按模版比例最大范围的裁剪图片并缩放至模版尺寸  
        /// </summary>  
        /// <remarks>吴剑 2012-08-08</remarks>  
        /// <param name="fromFile">原图Stream对象</param>  
        /// <param name="fileSaveUrl">保存路径</param>  
        /// <param name="maxWidth">最大宽(单位:px)</param>  
        /// <param name="maxHeight">最大高(单位:px)</param>  
        /// <param name="quality">质量(范围0-100)</param>  
        public static void CutForCustom(System.IO.Stream fromFile, string fileSaveUrl, int maxWidth, int maxHeight, int quality)  
        {  
            //从文件获取原始图片,并使用流中嵌入的颜色管理信息  
            System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFile, true);  
   
            //原图宽高均小于模版,不作处理,直接保存  
            if (initImage.Width <= maxWidth && initImage.Height <= maxHeight)  
            {  
                initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);  
            }  
            else 
            {  
                //模版的宽高比例  
                double templateRate = (double)maxWidth / maxHeight;  
                //原图片的宽高比例  
                double initRate = (double)initImage.Width / initImage.Height;  
   
                //原图与模版比例相等,直接缩放  
                if (templateRate == initRate)  
                {  
                    //按模版大小生成最终图片  
                    System.Drawing.Image templateImage = new System.Drawing.Bitmap(maxWidth, maxHeight);  
                    System.Drawing.Graphics templateG = System.Drawing.Graphics.FromImage(templateImage);  
                    templateG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;  
                    templateG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
                    templateG.Clear(Color.White);  
                    templateG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);  
                    templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);  
                }  
                //原图与模版比例不等,裁剪后缩放  
                else 
                {  
                    //裁剪对象  
                    System.Drawing.Image pickedImage = null;  
                    System.Drawing.Graphics pickedG = null;  
   
                    //定位  
                    Rectangle fromR = new Rectangle(0, 0, 0, 0);//原图裁剪定位  
                    Rectangle toR = new Rectangle(0, 0, 0, 0);//目标定位  
   
                    //宽为标准进行裁剪  
                    if (templateRate > initRate)  
                    {  
                        //裁剪对象实例化  
                        pickedImage = new System.Drawing.Bitmap(initImage.Width, (int)System.Math.Floor(initImage.Width / templateRate));  
                        pickedG = System.Drawing.Graphics.FromImage(pickedImage);  
   
                        //裁剪源定位  
                        fromR.X = 0;  
                        fromR.Y = (int)System.Math.Floor((initImage.Height - initImage.Width / templateRate) / 2);  
                        fromR.Width = initImage.Width;  
                        fromR.Height = (int)System.Math.Floor(initImage.Width / templateRate);  
   
                        //裁剪目标定位  
                        toR.X = 0;  
                        toR.Y = 0;  
                        toR.Width = initImage.Width;  
                        toR.Height = (int)System.Math.Floor(initImage.Width / templateRate);  
                    }  
                    //高为标准进行裁剪  
                    else 
                    {  
                        pickedImage = new System.Drawing.Bitmap((int)System.Math.Floor(initImage.Height * templateRate), initImage.Height);  
                        pickedG = System.Drawing.Graphics.FromImage(pickedImage);  
   
                        fromR.X = (int)System.Math.Floor((initImage.Width - initImage.Height * templateRate) / 2);  
                        fromR.Y = 0;  
                        fromR.Width = (int)System.Math.Floor(initImage.Height * templateRate);  
                        fromR.Height = initImage.Height;  
   
                        toR.X = 0;  
                        toR.Y = 0;  
                        toR.Width = (int)System.Math.Floor(initImage.Height * templateRate);  
                        toR.Height = initImage.Height;  
                    }  
   
                    //设置质量  
                    pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;  
                    pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
   
                    //裁剪  
                    pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);  
   
                    //按模版大小生成最终图片  
                    System.Drawing.Image templateImage = new System.Drawing.Bitmap(maxWidth, maxHeight);  
                    System.Drawing.Graphics templateG = System.Drawing.Graphics.FromImage(templateImage);  
                    templateG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;  
                    templateG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
                    templateG.Clear(Color.White);  
                    templateG.DrawImage(pickedImage, new System.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, pickedImage.Width, pickedImage.Height), System.Drawing.GraphicsUnit.Pixel);  
   
                    //关键质量控制  
                    //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff  
                    ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();  
                    ImageCodecInfo ici = null;  
                    foreach (ImageCodecInfo i in icis)  
                    {  
                        if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")  
                        {  
                            ici = i;  
                        }  
                    }  
                    EncoderParameters ep = new EncoderParameters(1);  
                    ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);  
   
                    //保存缩略图  
                    templateImage.Save(fileSaveUrl, ici, ep);  
                    //templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);  
   
                    //释放资源  
                    templateG.Dispose();  
                    templateImage.Dispose();  
   
                    pickedG.Dispose();  
                    pickedImage.Dispose();  
                }  
            }  
   
            //释放资源  
            initImage.Dispose();  
        }  
        #endregion  
  
        #region 等比缩放  
   
        /// <summary>  
        /// 图片等比缩放  
        /// </summary>  
        /// <remarks>吴剑 2012-08-08</remarks>  
        /// <param name="fromFile">原图Stream对象</param>  
        /// <param name="savePath">缩略图存放地址</param>  
        /// <param name="targetWidth">指定的最大宽度</param>  
        /// <param name="targetHeight">指定的最大高度</param>  
        /// <param name="watermarkText">水印文字(为""表示不使用水印)</param>  
        /// <param name="watermarkImage">水印图片路径(为""表示不使用水印)</param>  
        public static void ZoomAuto(System.IO.Stream fromFile, string savePath, System.Double targetWidth, System.Double targetHeight, string watermarkText, string watermarkImage)  
        {  
            //创建目录  
            string dir = Path.GetDirectoryName(savePath);  
            if (!Directory.Exists(dir))  
                Directory.CreateDirectory(dir);  
   
            //原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)  
            System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFile, true);  
   
            //原图宽高均小于模版,不作处理,直接保存  
            if (initImage.Width <= targetWidth && initImage.Height <= targetHeight)  
            {  
                //文字水印  
                if (watermarkText != "")  
                {  
                    using (System.Drawing.Graphics gWater = System.Drawing.Graphics.FromImage(initImage))  
                    {  
                        System.Drawing.Font fontWater = new Font("黑体", 10);  
                        System.Drawing.Brush brushWater = new SolidBrush(Color.White);  
                        gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10);  
                        gWater.Dispose();  
                    }  
                }  
   
                //透明图片水印  
                if (watermarkImage != "")  
                {  
                    if (File.Exists(watermarkImage))  
                    {  
                        //获取水印图片  
                        using (System.Drawing.Image wrImage = System.Drawing.Image.FromFile(watermarkImage))  
                        {  
                            //水印绘制条件:原始图片宽高均大于或等于水印图片  
                            if (initImage.Width >= wrImage.Width && initImage.Height >= wrImage.Height)  
                            {  
                                Graphics gWater = Graphics.FromImage(initImage);  
   
                                //透明属性  
                                ImageAttributes imgAttributes = new ImageAttributes();  
                                ColorMap colorMap = new ColorMap();  
                                colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);  
                                colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);  
                                ColorMap[] remapTable = { colorMap };  
                                imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);  
   
                                float[][] colorMatrixElements = {   
                                   new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},  
                                   new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},  
                                   new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},  
                                   new float[] {0.0f,  0.0f,  0.0f,  0.5f, 0.0f},//透明度:0.5  
                                   new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}  
                                };  
   
                                ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements);  
                                imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);  
                                gWater.DrawImage(wrImage, new Rectangle(initImage.Width - wrImage.Width, initImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes);  
   
                                gWater.Dispose();  
                            }  
                            wrImage.Dispose();  
                        }  
                    }  
                }  
   
                //保存  
                initImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);  
            }  
            else 
            {  
                //缩略图宽、高计算  
                double newWidth = initImage.Width;  
                double newHeight = initImage.Height;  
   
                //宽大于高或宽等于高(横图或正方)  
                if (initImage.Width > initImage.Height || initImage.Width == initImage.Height)  
                {  
                    //如果宽大于模版  
                    if (initImage.Width > targetWidth)  
                    {  
                        //宽按模版,高按比例缩放  
                        newWidth = targetWidth;  
                        newHeight = initImage.Height * (targetWidth / initImage.Width);  
                    }  
                }  
                //高大于宽(竖图)  
                else 
                {  
                    //如果高大于模版  
                    if (initImage.Height > targetHeight)  
                    {  
                        //高按模版,宽按比例缩放  
                        newHeight = targetHeight;  
                        newWidth = initImage.Width * (targetHeight / initImage.Height);  
                    }  
                }  
   
                //生成新图  
                //新建一个bmp图片  
                System.Drawing.Image newImage = new System.Drawing.Bitmap((int)newWidth, (int)newHeight);  
                //新建一个画板  
                System.Drawing.Graphics newG = System.Drawing.Graphics.FromImage(newImage);  
   
                //设置质量  
                newG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;  
                newG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
   
                //置背景色  
                newG.Clear(Color.White);  
                //画图  
                newG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, newImage.Width, newImage.Height), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);  
   
                //文字水印  
                if (watermarkText != "")  
                {  
                    using (System.Drawing.Graphics gWater = System.Drawing.Graphics.FromImage(newImage))  
                    {  
                        System.Drawing.Font fontWater = new Font("宋体", 10);  
                        System.Drawing.Brush brushWater = new SolidBrush(Color.White);  
                        gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10);  
                        gWater.Dispose();  
                    }  
                }  
   
                //透明图片水印  
                if (watermarkImage != "")  
                {  
                    if (File.Exists(watermarkImage))  
                    {  
                        //获取水印图片  
                        using (System.Drawing.Image wrImage = System.Drawing.Image.FromFile(watermarkImage))  
                        {  
                            //水印绘制条件:原始图片宽高均大于或等于水印图片  
                            if (newImage.Width >= wrImage.Width && newImage.Height >= wrImage.Height)  
                            {  
                                Graphics gWater = Graphics.FromImage(newImage);  
   
                                //透明属性  
                                ImageAttributes imgAttributes = new ImageAttributes();  
                                ColorMap colorMap = new ColorMap();  
                                colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);  
                                colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);  
                                ColorMap[] remapTable = { colorMap };  
                                imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);  
   
                                float[][] colorMatrixElements = {   
                                   new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},  
                                   new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},  
                                   new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},  
                                   new float[] {0.0f,  0.0f,  0.0f,  0.5f, 0.0f},//透明度:0.5  
                                   new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}  
                                };  
   
                                ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements);  
                                imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);  
                                gWater.DrawImage(wrImage, new Rectangle(newImage.Width - wrImage.Width, newImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes);  
                                gWater.Dispose();  
                            }  
                            wrImage.Dispose();  
                        }  
                    }  
                }  
   
                //保存缩略图  
                newImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);  
   
                //释放资源  
                newG.Dispose();  
                newImage.Dispose();  
                initImage.Dispose();  
            }  
        }  
  
        #endregion  
  
        #region 其它  
   
        /// <summary>  
        /// 判断文件类型是否为WEB格式图片  
        /// (注:JPG,GIF,BMP,PNG)  
        /// </summary>  
        /// <param name="contentType">HttpPostedFile.ContentType</param>  
        /// <returns></returns>  
        public static bool IsWebImage(string contentType)  
        {  
            if (contentType == "image/pjpeg" || contentType == "image/jpeg" || contentType == "image/gif" || contentType == "image/bmp" || contentType == "image/png")  
            {  
                return true;  
            }  
            else 
            {  
                return false;  
            }  
        }  
  
        #endregion  
   
    }//end class  
}
登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
测试C#.NET应用程序:单元,集成和端到端测试 测试C#.NET应用程序:单元,集成和端到端测试 Apr 09, 2025 am 12:04 AM

C#.NET应用的测试策略包括单元测试、集成测试和端到端测试。1.单元测试确保代码的最小单元独立工作,使用MSTest、NUnit或xUnit框架。2.集成测试验证多个单元组合的功能,常用模拟数据和外部服务。3.端到端测试模拟用户完整操作流程,通常使用Selenium进行自动化测试。

C#.NET:探索核心概念和编程基础知识 C#.NET:探索核心概念和编程基础知识 Apr 10, 2025 am 09:32 AM

C#是一种现代、面向对象的编程语言,由微软开发并作为.NET框架的一部分。1.C#支持面向对象编程(OOP),包括封装、继承和多态。2.C#中的异步编程通过async和await关键字实现,提高应用的响应性。3.使用LINQ可以简洁地处理数据集合。4.常见错误包括空引用异常和索引超出范围异常,调试技巧包括使用调试器和异常处理。5.性能优化包括使用StringBuilder和避免不必要的装箱和拆箱。

c#.net的持续相关性:查看当前用法 c#.net的持续相关性:查看当前用法 Apr 16, 2025 am 12:07 AM

C#.NET依然重要,因为它提供了强大的工具和库,支持多种应用开发。1)C#结合.NET框架,使开发高效便捷。2)C#的类型安全和垃圾回收机制增强了其优势。3).NET提供跨平台运行环境和丰富的API,提升了开发灵活性。

从网络到桌面:C#.NET的多功能性 从网络到桌面:C#.NET的多功能性 Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

高级C#.NET教程:ACE您的下一次高级开发人员面试 高级C#.NET教程:ACE您的下一次高级开发人员面试 Apr 08, 2025 am 12:06 AM

C#高级开发者面试需要掌握异步编程、LINQ、.NET框架内部工作原理等核心知识。1.异步编程通过async和await简化操作,提升应用响应性。2.LINQ以SQL风格操作数据,需注意性能。3..NET框架的CLR管理内存,垃圾回收需谨慎使用。

c#.net适合您吗?评估其适用性 c#.net适合您吗?评估其适用性 Apr 13, 2025 am 12:03 AM

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

C#作为多功能.NET语言:应用程序和示例 C#作为多功能.NET语言:应用程序和示例 Apr 26, 2025 am 12:26 AM

C#在企业级应用、游戏开发、移动应用和Web开发中均有广泛应用。1)在企业级应用中,C#常用于ASP.NETCore开发WebAPI。2)在游戏开发中,C#与Unity引擎结合,实现角色控制等功能。3)C#支持多态性和异步编程,提高代码灵活性和应用性能。

C#.NET与未来:适应新技术 C#.NET与未来:适应新技术 Apr 14, 2025 am 12:06 AM

C#和.NET通过不断的更新和优化,适应了新兴技术的需求。1)C#9.0和.NET5引入了记录类型和性能优化。2).NETCore增强了云原生和容器化支持。3)ASP.NETCore与现代Web技术集成。4)ML.NET支持机器学习和人工智能。5)异步编程和最佳实践提升了性能。

See all articles