【C#】制作图集
如题目,用好几个图片拼在一个大图里,博主是用于Unity游戏开发使用的,话不多说,上代码!
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;namespace EffectsPackTool.Common
{/// <summary>/// 图集处理共通方法/// </summary>public static class SpriteSheet{/// <summary>/// 创建图集/// </summary>/// <param name="imagePaths">图片地址集</param>/// <param name="outputPath">输出路径</param>/// <param name="maxWidth">画布最大宽度</param>/// <param name="maxHeight">画布最大高度</param>/// <param name="imageMaxHeight">图片最大高度</param>public static bool CreateSpriteSheet(IEnumerable<string> imagePaths, string outputPath, int maxWidth, int maxHeight, int imageMaxHeight){try{using (Bitmap spriteSheet = new Bitmap(maxWidth, maxHeight)){using (Graphics g = Graphics.FromImage(spriteSheet)){g.Clear(Color.Transparent); // 如果需要透明背景可以设置int currentHeight = 0;int currentWidth = 0;foreach (string imagePath in imagePaths){using (Image image = Image.FromFile(imagePath)){// 检查是否超出最大宽度,如果是,则移至下一行if (image.Width + currentWidth > maxWidth){currentHeight += imageMaxHeight;currentWidth = 0;}// 绘制图像到sprite sheetg.DrawImage(image, new Point(currentWidth, currentHeight));// 更新当前宽度currentWidth += image.Width;}}}// 保存sprite sheet到指定路径spriteSheet.Save(outputPath, ImageFormat.Png);}return true;}catch (Exception ex){return false;}}}
}
没什么好说的 拿去直接用就行
完结!
相关文章:
【C#】制作图集
如题目,用好几个图片拼在一个大图里,博主是用于Unity游戏开发使用的,话不多说,上代码! using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging;namespace EffectsPac…...
行列视报表系统制作的报表与厂级监控信息系统(SIS)系统中的报表有什么区别?
厂级监控信息系统是集过程实时监测、优化控制及生产过程管理为一体的厂级自动化信息系统,是处于DCS以及相关辅助程控系统与全厂管理信息系统之间的一套实时厂级监控信息系统,该产品也是本公司的一套独立产品。 SIS系统中的报表只是其中的一个模块&#…...
算法08 广/宽度优先搜索及相关问题详解
这是《C算法宝典》算法篇的第08节文章啦~ 如果你之前没有太多C基础,请点击👉专栏:C语法入门,如果你C语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏ÿ…...
PyTorch 版本与 CUDA 版本的兼容性示例
PyTorch 1.9.0 及以上版本支持 CUDA 11.1。PyTorch 1.8.0 支持 CUDA 11.0。PyTorch 1.7.0 支持 CUDA 10.2。PyTorch 1.6.0 支持 CUDA 10.1。PyTorch 1.5.0 支持 CUDA 10.1。PyTorch 1.4.0 支持 CUDA 10.1。PyTorch 1.3.0 支持 CUDA 10.0。PyTorch 1.2.0 支持 CUDA 9.2。PyTorch…...
Selenium进行Web自动化滚动
在使用Selenium进行Web自动化时,计算页面内的滚动条位置或执行滚动操作通常涉及JavaScript执行。Selenium的WebDriver提供了执行JavaScript代码的功能,这可以用来获取滚动条的位置或滚动到页面上的特定位置。 获取滚动条位置 你可以使用JavaScript的wi…...
机器学习模型训练过程和预测过程 用孩子来生动的比喻 --九五小庞
训练过程:孩子在学习知识 想象一下,一个年幼的孩子刚开始学习新知识,这就像是机器学习的模型训练过程。 收集教材:孩子首先得到了一本教科书或一系列学习材料,这些材料就像机器学习中的数据集,包含了各种…...
【爱上C++】详解string类2:模拟实现、深浅拷贝
在上一篇文章中我们介绍了string类的基本使用,本篇文章我们将讲解string类一些常用的模拟实现,其中有很多细小的知识点值得我们深入学习。Let’s go! 文章目录 类声明默认成员函数构造函数析构函数拷贝构造函数深浅拷贝问题传统写法现代写法…...
狄克斯特拉算法
狄克斯特拉算法(Dijkstra’s algorithm)是一种用于在带权图中找到从单一源点到所有其他顶点的最短路径的算法。它适用于处理带有非负权值的图。 下面将详细解释算法的工作原理、时间复杂度以及如何通过优化数据结构来改进其性能。 狄克斯特拉算法的工作…...
2024推荐整理几个磁力导航网站可提供海量资源的
都2024现在网上找资源像流水得鱼一样,抓一大把结果很难吃,我通宵特意整理的网站,网上有许多磁力导航网站可以提供海量的磁力链接资源,以下是一些有效的磁力导航网站推荐: 磁力搜索 链接: 资源类型&#x…...
链式访问:C语言中的函数调用技巧
链式访问:C语言中的函数调用技巧 在C语言编程中,链式访问(chained calls)是一个常见的编程技巧,它允许你在一行代码中连续调用多个函数或方法。这种技巧不仅能够让代码更加简洁和易读,还能减少临时变量的使…...
数据库设计(实战项目)-1个手机号多用户身份
一. 背景: 该需求是一个互联网医院的预约单场景,护士在小程序上申请患者查房预约单,医生在小程序上对预约单进行接单,护士开始查房后填写查房小结,客户需要对用户信息进行授权,医生查房后进行签字ÿ…...
vue+fineReport 使用前端搜索+报表显示数据
--fineReprot 将需要搜索的参数添加到模版参数 sql: --前端传递参数 注:因为每次点击搜索的结果需要不一样,还要传递一个时间戳的参数: let timesamp new Date().getTime()...
高阶面试-存储系统的设计
概述 分类 块存储 block storage文件存储 file storage对象存储 object storage 区别: 块存储 概述 位于最底层,块,是物理存储设备上数据存储的最小单位。硬盘(Hard Disk Drive,HDD)就属于块存储。常见的还有固态硬盘(SSD)、…...
柔性测斜仪:土木工程与地质监测的得力助手
在现代土木工程和地质工程领域,精确监测土壤和岩石的位移情况对于确保工程安全至关重要。柔性测斜仪作为一种高精度、稳定性和灵活性兼备的测量设备,已逐渐成为工程师和研究人员的得力助手。本文将深入探讨柔性测斜仪在多个关键领域的应用及其重要性。 点…...
数字资产和数据资产你真的了解吗?
数据作为新型生产要素,是数字化、网络化、智能化的基础,已快速融入生产、分配、流通、消费和社会服务管理等各环节,深刻改变着生产方式、生活方式和社会治理方式。 何为数据资产?即由个人或企业拥有或控制的,能为企业带…...
【每日一练】python运算符
1. 算术运算符 编写一个Python程序,要求用户输入两个数,并执行以下运算:加法、减法、乘法、求余、除法、以及第一个数的第二个数次方。将结果打印出来。 a input("请输入第一个数:") b input("请输入第二个数&…...
CesiumJS【Basic】- #032 绘制虚线(Primitive方式)
文章目录 绘制虚线(Primitive方式)1 目标2 代码2.1 main.ts绘制虚线(Primitive方式) 1 目标 使用Primitive方式绘制虚线 2 代码 2.1 main.ts // 定义线条的起点和终点var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883)...
海尔智家:科技优秀是一种习惯
海尔智家:科技优秀是一种习惯 2024-06-28 15:19代锡海 6月24日,2023年度国家科学技术奖正式揭晓。海尔智家“温湿氧磁多维精准控制家用保鲜电器技术创新与产业化”项目荣获国家科学技术进步奖,成为家电行业唯一牵头获奖企业。 很多人说&…...
【Android】实现图片和视频混合轮播(无限循环、视频自动播放)
目录 前言一、实现效果二、具体实现1. 导入依赖2. 布局3. Banner基础配置4. Banner无限循环机制5. 轮播适配器6. 视频播放处理7. 完整源码 总结 前言 我们日常的需求基本上都是图片的轮播,而在一些特殊需求,例如用于展览的的数据大屏,又想展…...
VLAN基础
一、什么是Vlan VLAN(Virtual Local Area Network)是虚拟局域网的简称,是一种将单一物理局域网(LAN)在逻辑层面上划分为多个独立的广播域的技术。每个VLAN都是一个独立的广播域,其内部主机可以直接通信&am…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 {//枚举 0 出现的次数//因…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
