WPF 颜色插值

2023-12-13

我正在尝试基于调色板绘制 WPF 控件的背景,其中每种颜色都分配有值(例如,红色 = 0、深绿 = 10、绿色 = 20、浅绿 = 30)和用户选择的值(例如 25)会给出最终的颜色。我希望生成的颜色是 2 个最接近的颜色值之间的插值(例如,对于 25 的值,它应该给出绿色和浅绿色之间的颜色)

为此,我正在考虑使用 WPF 中现有的 LinearGradientBrush;设置 GradientStops、偏移量并获取指定值的颜色。有没有办法做到这一点或者我应该实现自己的颜色插值函数?

Thanks.


使用 LinearGradientBrush 听起来好像会产生一些开销。虽无知识。不过,编写颜色插值函数并不难。

为简单起见,我假设您的调色板具有可被 10 整除的值。

public static Color GetColor(int value)
{
    int startIndex = (value/10)*10;
    int endIndex = startIndex + 10;

    Color startColor = Palette[startIndex];
    Color endColor = Palette[endIndex];

    float weight = (value - startIndex)/(float)(endIndex - startIndex);

    return Color.FromArgb(
        (int)Math.Round(startColor.R * (1 - weight) + endColor.R * weight),
        (int)Math.Round(startColor.G * (1 - weight) + endColor.G * weight),
        (int)Math.Round(startColor.B * (1 - weight) + endColor.B * weight));

}

如果定义的颜色不能被 10 整除,则查找开始颜色和结束颜色的逻辑会稍微复杂一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 颜色插值 的相关文章

随机推荐

  • 通过隐藏字段内的 ID 删除表行

    我有一个表 它在 JSP 中的 while 循环中生成其行 如下所示 我在每行中使用隐藏字段来获取特定 ID 并将其 POST 到 servlet tr td td tr
  • 优点、问题、向 iOS 应用程序添加另一个 UIWindow 的示例?

    最近我一直想知道 iOS 应用程序只有一个UIWindow 创建另一个似乎不是问题UIWindow并将其放置在屏幕上 我的问题有点模糊 但我感兴趣的是 第二次我可以实现什么目标UIWindow不能用其他方式做到吗 使用多个时可能会出现什么问
  • 使用 NEST 的 Elasticsearch:如何配置分析器来查找部分单词?

    我试图按部分单词进行搜索 忽略大小写并忽略某些字母的重音 是否可以 我认为带有默认分词器的 ngram 应该可以解决问题 但我不明白如何使用 NEST 来做到这一点 示例 musiic 应匹配包含 music 的记录 我使用的Elastic
  • 在VBA过程中使用ADODB查询Excel文件时,多个JOIN不可用吗?

    我有 3 张数据表 数据格式为表格 工作表名称为 Riesgos Eventos 和 Eventos Riesgos EventosRiesgo 拥有与事件和风险相关的信息 多对多关系 我试图获取来自 Riesgos 的所有风险 以及与来自
  • 如何在 TFS 构建中获取 nuget 恢复

    我无法让它工作 TFS 构建 这是 nuget 恢复问题 Nuget 不恢复引用 dll 文件 下面是我的构建配置 请告诉我如何才能使其发挥作用 As per 这篇博文在 Nuget 的网站上 您可以使用您提到的命令行 但它必须是使用Bui
  • 在 bash 中按特定顺序打印文件

    我有包含内容的文件 文件 txt Iteration 1 RAM 456ms Cache 142ms total 417ms Iteration 2 Spec 152ms Cache 149ms total 413ms Iteration
  • 调整字体大小后 Webview 高度不改变

    在我的应用程序中 我使用 ScrollView 这个ScrollView包含了很多Webview 我更改网络视图字体大小 webView getSettings setTextSize WebSettings TextSize LARGER
  • 使用 PKCS#8 编码的私钥创建兼容的 Java“RSA”签名

    我有 pkcs8 rsa private key 文件 它是由 openssl 从 rsa private key pem 文件生成的 我需要在python中通过私钥进行签名 使用下面的java代码进行相同的签名 public static
  • 面积图中的颜色变化

    我有一个扩展 AreaChart 的 Java 类 我想实现一种方法 或多或少是这样的 public void addNewColorToData xCoordinate yCoordinate redColor greenColor bl
  • 如何在普通 Python 3 中监听原始以太网帧?

    我正在用 Python 进行一些自学的低级网络编程 我在用着乌班图18 04 and Python 3 使用此代码 我可以发送原始以太网数据包 from socket import socket as Socket AF PACKET SO
  • 查找文本节点

    是否有一个聪明的 jQuery 选择器来选择这样的文本节点 div div
  • 如何从命令行获取正确的 Windows 版本

    如何从命令行 包括 PowerShell 获取正确的 Windows 版本 正如我尝试过的所有解决方案 答案如何从 PowerShell 命令行查找 Windows 版本 但现在没有人能够给出这个 您可以从注册表中检索它 gt e g 22
  • Java持久化API中FetchType LAZY和EAGER的区别?

    有什么区别FetchType LAZY and FetchType EAGER在 Java 持久性 API 中 有时您有两个实体 并且它们之间存在关系 例如 您可能有一个名为University另一个实体称为Student一所大学可能有很多
  • 如何在 Flutter 中使用 BottomNavigationBar 维护 Webview 状态

    我正在创建一个 Flutter 应用程序 它使用 BottomNavigationBar 在页面之间进行更改 在其中一个页面中 我有一个 Webview 我正在使用plugin由 Flutter 开发团队开发 当我导航到另一个选项卡然后返回
  • 这是创建审计跟踪的最佳方法吗?

    我正在尝试创建一些功能 以保留给定用户表单中的数据如何随时间变化的审计跟踪 并在该页面的底部提供带日期的审计 例如 02 04 09 21 49 名称从 Tom 更改为 Chris 我这样做的方法是将数据以其当前格式存储在会话中 然后在保存
  • X64 指令在不同 CPU 上表现不同

    在一次采访中 我被问到是否知道 x64 指令的行为取决于所使用的 CPU 我在任何地方都找不到任何相关文档 有谁知道这些指令是什么以及为什么会出现这种情况 有一些留下一个寄存器或一些带有未定义值的标志 英特尔和AMD 在这方面可能有所不同
  • FirebaseMessaging.instance.getInitialMessage() 不适用于启动画面

    在 GetX 状态管理的帮助下 我已将 Firebase Cloud Messaging 集成到我的 Flutter 移动应用中 我还使用 Laravel 和 Firebase Admin SDK 向我的应用程序发送通知 该通知在前台状态和
  • Dialogflow 将企业版 v2 集成到 ios 和 android 应用程序中

    我之前使用的是v1版本的dialogflow 然后他们宣布将暂停它 我将云函数中的代码迁移到了v2 但我找不到将其集成到 ios 和 android 应用程序中的方法 请帮帮我 谢谢 要将代理更新到 V2 您应该创建一个 Cloud Fun
  • 如何将 DataTable 设置为 DataGridComboBoxColum 的 ItemsSource?

    我有一个包含两列的 DataTable 我将它们绑定到 DataGridComboBoxColumn 的所有组合框 其中一列将是项目的文本 其他列将是项目的值 我知道名为 DisplayMemberPath 的属性是我将列的名称指定为项目文
  • WPF 颜色插值

    我正在尝试基于调色板绘制 WPF 控件的背景 其中每种颜色都分配有值 例如 红色 0 深绿 10 绿色 20 浅绿 30 和用户选择的值 例如 25 会给出最终的颜色 我希望生成的颜色是 2 个最接近的颜色值之间的插值 例如 对于 25 的