画笔几个方法的学习

部署运行你感兴趣的模型镜像

using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace DrawTest { class DrawHelper { //生成验证字符串 private string CreateCheckCodeString() { //定义用于验证符的字符数组 char[] allCharArray = {'0','1','2','3','4','5','6','7','8','9','A','S','C','D','E','F','G', 'H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' }; //定义验证字符串 string randomCode = ""; Random rand = new Random(); for (int i = 0; i < 4; i++) { randomCode +=allCharArray[rand.Next (allCharArray.Length)]; } return randomCode; } /// <summary> /// 生成验证图片 /// </summary> /// <param name="sFilePath">图片的存储地址</param> private void CreateCheckCodeImage(string sFilePath) { // 定义图片的宽度 int iWidth = 55; // 定义图片的高度 int iHeight = 22; // 定义字体 Font font = new Font("Arial", 12, FontStyle.Bold); // 定义黑色的画笔,用于绘制文字 SolidBrush brush = new SolidBrush(Color .Black); // 定义钢笔,绘制干扰线 Pen pen1 = new Pen(Color .Gray,0); Pen pen2 = new Pen(Color .FromArgb(255,100,100,100),0);//根据argb获取颜色 //创建一个55px*22px的图像 Bitmap image = new Bitmap(iWidth ,iHeight ); //从图像上获取一个会图面 Graphics g = Graphics.FromImage(image); // 清楚整个绘图画面并以指定颜色填充 g.Clear(ColorTranslator .FromHtml("#F0F0F0"));//从HTML中获取颜色对象 //定义文字的绘制矩形区域 RectangleF rect = new RectangleF(5,2,iWidth ,iHeight ); //绘制干扰线 Random rand = new Random();//定义随即对象绘制干扰线 //两条横向干扰线 for (int i = 0; i < 2; i++) { //定义起点 Point p1 = new Point(0,rand.Next (iHeight)); //定义终点 Point p2 = new Point(iWidth ,rand .Next (iHeight)); //绘制直线 g.DrawLine(pen1,p1,p2); } //生成4条纵向的干扰线 for (int i = 0; i < 4; i++) { //定义起点 Point p1 = new Point(rand.Next (iWidth ),0); //定义终点 Point p2 = new Point(rand.Next (iWidth ),iHeight); //绘制直线 g.DrawLine(pen2, p1, p2); } //绘制文字 g.DrawString(CreateCheckCodeString(),font ,brush,rect); try { //保存为jpeg格式 image.Save(sFilePath, ImageFormat.Jpeg); } catch { } //释放对象 g.Dispose(); image.Dispose(); } /// <summary> /// 生成缩略图 /// </summary> /// <param name="sFileSrcPath">源文件图像地址</param> /// <param name="sFileDstPath">目标图像地址</param> /// <param name="iSizeLimit">指定的大小</param> public void CreateThumbnailImage(string sFileSrcPath, string sFileDstPath, int iSizeLimit) { //检测原图片是否存在 if (File.Exists(sFileSrcPath)) { //获取原图片图像 Image image = Image.FromFile(sFileSrcPath); //定义大小结构 SizeF size = new SizeF(image .Width ,image .Height ); //计算出符合要求的大小 while (size.Width > iSizeLimit || size.Height > iSizeLimit) { size.Height /= 1.1F; size.Width /= 1.1F; } //创建缩略图像 Bitmap bitmap = new Bitmap(Convert.ToInt16(size.Width), Convert.ToInt16(size.Height)); //创建绘画面 Graphics g = Graphics.FromImage(bitmap ); //清楚颜色,用透明色填充 g.Clear(Color .Transparent); //定义源图像的矩形区域 Rectangle srcrect = new Rectangle(0,0,image.Width ,image .Height ); //定义缩略图的矩形区域 Rectangle Dstrect = new Rectangle(0,0,bitmap .Width ,bitmap .Height ); //绘制图 g.DrawImage(image,Dstrect ,srcrect ,GraphicsUnit.Pixel); //存储为jpeg格式的图片 bitmap.Save(sFileDstPath,ImageFormat.Jpeg); //释放对象 g.Dispose(); image.Dispose(); bitmap.Dispose(); } } /// <summary> /// 生成黑白图像,仅支持jpeg格式,效率很差 /// </summary> /// <param name="sFileSrcPath">源文件</param> /// <param name="sFileDstPath">目标文件</param> public void CreateBlackAndWhiteImage(string sFileSrcPath, string sFileDstPath) { //获取源图片图像 Bitmap image = (Bitmap)Image.FromFile(sFileSrcPath); //源图像的大小 int iWidth = image.Width; int IHeight = image.Height; //创建黑白图像 Bitmap bitmap = new Bitmap(iWidth, IHeight); //定义临时变量 Color color; int value; //遍历所有像素 for (int i = 0; i < iWidth; i++) { for (int j = 0; j < IHeight; j++) { //从源图像中得到当前像素的color对象 color = image.GetPixel(i,j); //计算新的RGB值 value=(int)(0.299*color.R+0.14*color .G+0.587*color .B); //设置新的像素 bitmap.SetPixel(i,j,Color.FromArgb(value,value,value)); } } //存储为jpeg格式的图片 bitmap.Save(sFileDstPath,ImageFormat.Jpeg); //释放对象 image.Dispose(); bitmap.Dispose(); } /// <summary> /// 测试 /// </summary> /// <param name="args"></param> static void Main(string[] args) { DrawHelper p = new DrawHelper(); p.CreateCheckCodeImage(@"D:\Test\CheckCode.jpg"); p.CreateThumbnailImage(@"D:\Test\Test.jpg",@"D:\Test\Test_Small.jpg",100); p.CreateBlackAndWhiteImage(@"D:\Test\Test.jpg", @"D:\Test\Test_BlackAndWhite.jpg"); } } }

//

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开,重点研究其动力学建模与控制系统设计。通过Matlab代码与Simulink仿真实现,详细阐述了该类无人机的运动学与动力学模型构建过程,分析了螺旋桨倾斜机构如何提升无人机的全向机动能力与姿态控制性能,并设计相应的控制策略以实现稳定飞行与精确轨迹跟踪。文中涵盖了从系统建模、控制器设计到仿真验证的完整流程,突出了全驱动结构相较于传统四旋翼在欠驱动问题上的优势。; 适合人群:具备一定控制理论基础和Matlab/Simulink使用经验的自动化、航空航天及相关专业的研究生、科研人员或无人机开发工程师。; 使用场景及目标:①学习全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真技术;③深入理解螺旋桨倾斜机构对飞行性能的影响及其控制实现;④为相关课题研究或工程开发提供可复现的技术参考与代码支持。; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型,逐步跟进文档中的建模与控制设计步骤,动手实践仿真过程,以加深对全驱动无人机控制原理的理解,并可根据实际需求对模型与控制器进行修改与优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值