【学Rust写CAD】36 颜色插值函数(alpha256.rs补充方法)
源码
pub fn alpha_lerp(self,src: Argb, dst: Argb, clip: u32) -> Argb {self.alpha_mul_256(clip).lerp(src, dst)}
这个函数 alpha_lerp 是一个颜色插值(线性插值,lerp)函数,它结合了透明度混合(alpha_mul_256)和颜色插值(lerp),用于计算两个颜色 src 和 dst 的混合结果,其中混合比例由 self(透明度)和 clip(裁剪值)共同决定。
参数:
-
self:一个 Alpha256 类型的值,表示透明度 alpha256,范围是 [0, 256]。
-
src:源颜色,类型为 Argb(通常表示带 Alpha 通道的 RGBA 颜色)。
-
dst:目标颜色,类型为 Argb。
-
clip:一个 u32 值,用于调整混合比例,范围是 [0, 255] 。
返回值:
- 返回一个 Argb,表示混合后的颜色值。
计算步骤:
- self.alpha_mul_256(clip):
-
调用 alpha_mul_256 方法,计算 (clip * alpha256) / 255,得到一个 Alpha256 类型的混合比例。
-
这个比例用于后续的颜色插值。
- .lerp(src, dst):
-
使用上一步计算的比例,对 src 和 dst 进行线性插值(lerp)。
-
lerp 的公式通常是 src * (1 - t) + dst * t,其中 t 是混合比例(Alpha256 的值归一化到 [0, 1])。
作用:
-
这个函数主要用于颜色混合,例如:
-
在图形渲染中,将一个半透明的颜色 src 叠加到背景颜色 dst 上。
-
在 UI 绘制中,实现渐变或淡入淡出效果。
-
-
clip 参数可以进一步控制混合比例(例如,用于裁剪效果)。
-
self 用于遮罩效果
示例:
假设:
-
self.0 = 128(alpha256 = 128,半透明)。
-
clip = 255(最大值)。
-
src = Argb(0xFFFF0000)(红色,完全不透明)。
-
dst = Argb(0xFF0000FF)(蓝色,完全不透明)。
计算过程:
- alpha_mul_256(255):
-
prod = 255 * 128 = 32640。
-
(prod + (prod >> 8)) >> 8 = (32640 + 127) >> 8 = 32767 >> 8 = 127。
-
返回 Alpha256(127)(即 t ≈ 127 / 256 ≈ 0.496)。
- lerp(src, dst):
-
对 src 和 dst 的每个通道(A、R、G、B)进行插值:
- 红色通道:0xFF * (1 - 0.496) + 0x00 * 0.496 ≈ 0x80。
-
蓝色通道:0x00 * (1 - 0.496) + 0xFF * 0.496 ≈ 0x80。
-
最终混合颜色可能是 Argb(0xFF808080)(灰色)。
总结:
alpha_lerp 是一个高效的透明度混合函数,结合了 alpha_mul_256 和 lerp,适用于图形渲染、颜色混合等场景。它通过整数运算避免了浮点计算,同时保持较高的精度。
相关文章:
【学Rust写CAD】36 颜色插值函数(alpha256.rs补充方法)
源码 pub fn alpha_lerp(self,src: Argb, dst: Argb, clip: u32) -> Argb {self.alpha_mul_256(clip).lerp(src, dst)}这个函数 alpha_lerp 是一个颜色插值(线性插值,lerp)函数,它结合了透明度混合(alpha_mul_256&…...
[GN] 通讯协议 - Uart
系列文章目录 sigrokdecode 模块学习指南 — 准备阶段 文章目录 系列文章目录前言通讯协议Uart通讯协议什么是UartUART通信协议 其他协议后续待更 前言 在阅读libsigrokdecode源码之前,先学习通讯协议。so hard!! 通讯协议 Uart通讯协议 …...
C# 状态模式深度解析:构建灵活的状态驱动系统
一、状态模式概述 状态模式(State Pattern)是一种行为型设计模式,它允许对象在其内部状态改变时改变其行为,使对象看起来像是修改了它的类。这种模式将特定状态相关的行为局部化,并且将不同状态的行为分割开来。 状态…...
MySQL学习笔记四
第六章过滤数据 6.1使用WHERE子句 输入: SELECT job_id, job_title FROM jobs WHERE min_salary4200; 输出: 说明:在需要特定数据时需要根据条件对数据库中的数据进行过滤,即指定搜索条件(过滤条件)&a…...
Node环境安装
1.下载安装 作为开发使用,追求长期运行的Node环境,建议选择LTS版本(长期支持稳定版),本地测试可以选择最新版本。首先,访问Node.js官网下载安装程序,好在官网默认就有下载链接: 直接点击下载即可ÿ…...
浏览器自动化操作AI工具-browser-use
一、项目概述 Browser-Use 是一个将大型语言模型(LLM)与浏览器自动化结合的开源工具,旨在通过AI代理实现智能化的网页交互操作。其核心目标是为开发者提供一种无需编写复杂脚本即可完成网页自动化任务的解决方案,支持从数据抓取到…...
极氪汽车云原生架构落地实践
云原生架构落地实践的背景 随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。 为快速响应用户的需求,例如…...
[ctfshow web入门] web16
信息收集 提示:对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露 试试url/phpinfo.php url/phpsysinfo.php url/tz.php tz.php能用 点击phpinfo,查看phpinfo信息,搜索flag,发现flag被保存为变量…...
沧州铁狮子
又名“镇海吼”,是中国现存年代最久、形体最大的铸铁狮子,具有深厚的历史文化底蕴和独特的艺术价值。以下是关于沧州铁狮子的详细介绍: 历史背景 • 铸造年代:沧州铁狮子铸造于后周广顺三年(953年)&#…...
【Android Sdk】uiautomatorviewer.bats闪退问题如何解决?
目录 一、uiautomatorviewer.bats闪退 1. 报错场景 2. 问题原因 3. 解决方法 前言 具体操作 一、uiautomatorviewer.bats闪退 1. 报错场景 SDK的tools文件夹中uiautomatorviewer.bat双击闪退不能打开,直接双击uiautomatorviewer.bat闪退。 双击打不开uiaut…...
Redis7——进阶篇(八)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
蓝桥杯 封闭图形个数 刷题笔记
分析 写一个node结构 定义两个数一个存数值 一个存图形个数 分解每个输入的数 的每一位 为每个输入的数赋值一个封闭图形个数的值作为判断依据 重写 cmp函数作为 sort的判断依据 #include<iostream> #include<bits/stdc.h> using namespace std; const int N…...
AI大模型底层技术——结合 Prompt Engineering 的 LoRA
目录 1. 结合 Prompt Engineering 的 LoRA? (1) 定义 (2) 核心思想 2. 核心功能 3. 对比传统通用微调 4. 技术要素 (1) Prompt Engineering (2) LoRA 微调 (3) Prompt & LoRA 协同优化 5. 难点及解决 6. 技术路径 7. 具体技术实现 8. 应用场景 9. …...
7-Zip如何创建分卷压缩文件,进行分批压缩?
相信很多小伙伴在传输文件时会选择先压缩成7-Zip等压缩包后再传输,但如果压缩的文件过大大,传输速度就会很慢,或者上传压缩文件到云盘时也会受到文件大小的限制。 要解决以上问题,我们可以 把文件压缩成多个标准的压缩包…...
【蓝桥杯省赛】 02 包子凑数
题目描述 小明想知道包子铺用给定的蒸笼规格能凑出多少种无法组成的包子数目。若无法组成的数目无限,输出 INF。 输入格式 第一行为整数 N N N(蒸笼种数)接下来 N N N 行每行一个整数 A i A_i Ai(每种蒸笼的包子数&#x…...
人工智能通识速览(Part3. 强化学习)
三、强化学习 1. 基本概念 强化学习是机器学习中的一个重要领域,它涉及智能体(agent)如何在环境中采取一系列行动,以最大化累积奖励。以下是关于强化学习的详细介绍: 智能体:是一个能够感知环境并采取行动…...
深度解析LinkedList工作原理
引言 在 Java 编程中,集合框架是处理数据存储和操作的强大工具。LinkedList 作为其中的重要成员,为我们提供了一种灵活的列表实现方式。与 ArrayList 基于数组的实现不同,LinkedList 采用链表结构,这使得它在某些操作上具有独特的…...
excel的逻辑类型函数(主要包括if、and、or、not、xor、iserror、iferror、true、false、ifs、ifna、switch)
目录 1. IF 函数2. AND 函数3. OR 函数4. NOT 函数5. XOR 函数6. ISERROR 函数7. IFERROR 函数8. TRUE 与 FALSE9. IFS 函数10. IFNA 函数11. SWITCH 函数 1. IF 函数 功能: 根据指定条件判断结果,如果条件为 TRUE,则返回一个值;…...
数据驱动金融韧性升级,开启数据交换“新范式”:构建“实时、国产化强适配”的数据交换与共享平台
在金融行业,数据不只是“资产”,更是贯穿风控、合规、营销与运营的核心“生命线”。而在数字化加速与信创战略并行推进的当下,金融行业对于“实时数据流通”的需求从未如此迫切。 面对业务复杂性提升、国产化替代加速,以及监管科…...
cpp自学 day20(文件操作)
基本概念 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将数据持久化 C中对文件操作需要包含头文件 <fstream> 文件类型分为两种: 文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的…...
Qt饼状图在图例上追踪鼠标落点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、饼状图的关键接口二、关键代码1.鼠标移动事件2.核心判断逻辑 总结 前言 最近做了一个项目,需要当鼠标在饼状图上移动的时候展示Slice的内容&am…...
ZKmall开源商城服务端验证:Jakarta Validation 详解
ZKmall开源商城基于Spring Boot 3构建,其服务端数据验证采用Jakarta Validation API(原JSR 380规范),通过声明式注解与自定义扩展机制实现高效、灵活的数据校验体系。以下从技术实现、核心能力、场景优化三个维度展开解析&#…...
操作系统概述(3)
批处理系统 1.单道批处理系统 单道批处理系统是成批地处理作用,并且始终只有一道作业在内存中的系统。优点:提高系统资源的利用率和系统吞吐量。缺点:系统中的资源得不到充分利用。 2.多道批处理系统 引入多道程序设计技术,是…...
深入理解 Object.entries():基础用法与 Object.keys() 的核心区别
深入理解 Object.entries():基础用法与 Object.keys() 的核心区别 一、Object.entries() 是什么? Object.entries() 是 JavaScript 中的一个内置方法,用于将对象的 可枚举属性(自身的、非继承的)转换为一个数组。…...
GitHub 趋势日报 (2025年04月06日)
GitHub 趋势日报 (2025年04月06日) 本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星语言1microsoft/markitdownPython tool for converting files and office documents to Markdown.⭐ 548Py…...
Visual Studio 中使用 Clang 作为 C/C++ 编译器时,设置优化选项方法
在 Visual Studio 中使用 Clang 作为 C/C 编译器时,可以通过以下方法设置优化选项: 方法 1:通过项目属性设置(推荐) 右键项目 → 属性 配置属性 → C/C → 优化 优化:选择优化级别 /O0 - 禁用优化&#x…...
现场测试的特点与测试设备的基本要求
在各类测试场景中,现场测试有着不可替代的作用。不过,它也面临着诸多难题,对测试设备也有着特殊要求。今天,咱们就深入探讨一下现场测试的特点与测试设备的基本要求。 现场测试的特点 场地电磁环境噪声问题 建议环境噪声低于…...
构建一个最简单的UDP服务器和客户端并逐行解析
目录 1.服务器 (1)基本概念 (2)代码实现 3.逐行解析 1) 2) 3) 4) 5) 6) 7) 8) 1. response.getBytes(): 2.response.get…...
LeetCode 1638 统计只差一个字符的子串
标题:LeetCode 算法题 - 统计只差一个字符的子串数目 在算法学习的过程中,我们经常会遇到一些有趣的字符串问题。今天就来探讨一道这样的题目:给定两个字符串 s 和 t ,找出 s 中的非空子串的数目,这些子串满足替换一个…...
DAY 39 leetcode 18--哈希表.四数之和
题号18 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 和…...
关于lombok的异常快速解决办法
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
Android SELinux权限使用
Android SELinux权限使用 一、SELinux开关 adb在线修改seLinux(也可以改配置文件彻底关闭) $ getenforce; //获取当前seLinux状态,Enforcing(表示已打开),Permissive(表示已关闭) $ setenforce 1; //打开seLinux $ setenforce 0; //关闭seLinux二、命令查看sel…...
JavaWeb注解的原理
WebServlet("/mayikt") 是 Java Servlet 3.0 及以上版本中引入的注解,用于简化 Servlet 的配置。其原理和与 Servlet 映射关系的知识点如下: 1. 注解的作用与原理 核心功能: WebServlet 注解的作用是将当前类声明为一个 Servlet&am…...
类和对象—多态
目录 1、多态的概念2、多态的条件3、向上转型3.1 概念3.2 使用场景 4、向下转型5、多态的优缺点 1、多态的概念 多态,通俗来讲就是多种形态,即对于同样的行为,不同的对象去完成会产生不同的状态。比如动物都会吃东西,小狗和小猫都…...
vscode启动vite+Vue3项目调试功能,QQ浏览器为例
1、增加launch.json配置 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"type&quo…...
Spring MVC 的执行流程以及运行原理
一.什么是 MVC? MVC 是 Model 、 View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责, MVC 是一种软件设计规范。它将业务逻辑、数据、显示分离的方法来组织代码,降低了视图与业 务逻辑之间的…...
08-Spring MVC 请求处理流程全解析
Spring MVC 请求处理流程全解析(从 DispatcherServlet 到 Controller) Spring MVC 是构建 Web 应用的基础框架,而其中最核心的组件就是 DispatcherServlet,它作为整个请求流程的入口和协调者,掌控了从接收请求、分发到…...
pikachu靶场搭建教程,csfr实操
靶场安装 靶场下载地址 百度网盘下载地址和密码 百度网盘 请输入提取码 0278 github靶场下载地址 https://gitcode.com/Resource-Bundle-Collection/c7cc1 安装前提 这两个文件夹的配置文件都要进行更改修改数据库密码 D:\phpstudy_pro\WWW\pikachu\inc D:\phpstudy_pro…...
MCP + 数据库,一种比 RAG 检索效果更好的新方式!
大家好,欢迎来到 code秘密花园,我是 ConardLi。 在今天这一期,我们将一起学习一种基于 MCP 提高大模型检索外部知识精度的新思路,实测比 RAG 效果要好很多。 目前市面上讲 MCP 的教程比较多,但大多数都是一些概念性的…...
图像处理中的梯度计算、边缘检测与凸包特征分析技术详解
前言 书接上文 OpenCV图像处理实战全解析:镜像、缩放、矫正、水印与降噪技术详解-CSDN博客文章浏览阅读1.1k次,点赞38次,收藏29次。本文系统解析OpenCV图像处理五大实战场景:镜像反转的三种坐标变换模式,图像缩放的尺…...
TDengine 与 taosAdapter 的结合(一)
一、引言 在当今数字化时代,数据量呈爆发式增长,尤其是物联网、工业互联网等领域产生的海量时序数据,对数据存储和处理提出了极高要求。TDengine 作为一款高性能、开源的时序数据库,专为这些场景设计并优化,在时序数据…...
23种设计模式-行为型模式-模板方法
文章目录 简介场景解决代码关键优化点 总结 简介 模板方法是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。 场景 假如你正在开发一款分析文档的数据挖掘程序。用户需要向程序输入各种格式&…...
Django异步执行任务django-background-tasks
1、安装 pip install django-background-tasks 2、注册服务 INSTALLED_APPS [...background_task, ]3、生成表 // 生成迁移 python manage.py makemigrations //运行迁移 python manage.py migrate 4、创建文件,模拟任务 from background_task import backgrou…...
从零设计React-Markdown组件的实现方案
从零设计React-Markdown组件的实现方案 现在,把这些步骤整理成代码结构。首先是解析器类,用正则表达式分割文本为Token,然后生成AST。接着,编写一个React组件,接收Markdown字符串,解析成AST,遍历AST生成对应的React元素。处理代码高亮需要引入第三方库,但用户不允许用现…...
如何在React中集成 PDF.js?构建支持打印下载的PDF阅读器详解
本文深入解析基于 React 和 PDF.js 构建 PDF 查看器的实现方案,该组件支持 PDF 渲染、图片打印和下载功能,并包含完整的加载状态与错误处理机制。 完整代码在最后 一个PDF 文件: https://mozilla.github.io/pdf.js/web/compressed.tracemo…...
React-Markdown 组件底层实现原理详解
如何在 React 中渲染 Markdown 文档 React-Markdown 组件底层实现原理详解 一、核心架构:基于 Unified.js 的编译流水线 React-Markdown 的底层实现依赖于 Unified.js 这一开源内容处理系统,其核心是一个可插拔的编译流水线。整个过程分为四个阶段&…...
基于单片机的防火防盗报警系统设计(论文+源码)
2.1系统的功能及方案设计 本次课题为基于单片机的防火防盗报警系统,其系统采用STC89C52单片机为控制器,并结合SIM800短信模块,DS18B20温度检测模块,MQ-2烟雾检测模块,红外人体检测模块,按键模块,…...
NO.72十六届蓝桥杯备战|搜索算法-DFS|选数|飞机降落|八皇后|数独(C++)
P1036 [NOIP 2002 普及组] 选数 - 洛谷 组合型枚举,路径⾥⾯记录选择数的「总和」。在选出k 个数之后,判断「是否是质数」 #include <bits/stdc.h> using namespace std;const int N 25; int n, k; int a[N];int ret; int path; //记录路径中所…...
网络Socket编程基于UDP协议模拟简易网络通信
一、预备知识 网络编程(Network Programming)是指编写程序来实现计算机网络之间的通信。这通常涉及到使用套接字(sockets)来建立连接、发送和接收数据。 (一)套接字 套接字(Socket࿰…...
rust 使用select退出线程
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] pub struct Capture {clear: bool, // ????????interface: String, // ??times: u64, // ?? }pub async fn cmd_capture(State(web_env): State<ArcWebEnv>,Json(args): Json<C…...