当前位置: 首页 > news >正文

0372-Raylib-调色板

环境

  • Time 2024-02-27
  • Zig 0.12.0-dev.2790+fc7dd3e28
  • WSL-Ubuntu 22.04.3 LTS
  • Raylib 5.0

前言

说明

参考资料:

  1. https://www.raylib.com/examples.html

目标

渲染一个调色板。

main.zig

const std = @import("std");
const ray = @import("raylib.zig");pub fn main() !void {const screenWidth: c_int = 800;const screenHeight: c_int = 450;ray.InitWindow(screenWidth, screenHeight, "raylib [shapes] example");defer ray.CloseWindow();ray.SetTargetFPS(60);const colors = [_]ray.Color{ray.DARKGRAY, ray.MAROON,     ray.ORANGE,    ray.DARKGREEN, //ray.DARKBLUE, ray.DARKPURPLE, ray.DARKBROWN, ray.GRAY,ray.RED,      ray.GOLD,       ray.LIME,      ray.BLUE,ray.VIOLET,   ray.BROWN,      ray.LIGHTGRAY, ray.PINK,ray.YELLOW,   ray.GREEN,      ray.SKYBLUE,   ray.PURPLE,ray.BEIGE,};const colorNames = [_][*c]const u8{"DARKGRAY",   "MAROON",    "ORANGE", "DARKGREEN", "DARKBLUE", //"DARKPURPLE", "DARKBROWN", "GRAY",   "RED",       "GOLD","LIME",       "BLUE",      "VIOLET", "BROWN",     "LIGHTGRAY","PINK",       "YELLOW",    "GREEN",  "SKYBLUE",   "PURPLE","BEIGE",};var colorsRecs: [colors.len]ray.Rectangle = undefined; // Rectangles array// Fills colorsRecs data (for every rectangle)for (0..colors.len) |i| {colorsRecs[i].x = 20.0 + 110.0 * @as(f32, @floatFromInt(@mod(i, 7)));colorsRecs[i].y = 80.0 + 110.0 * @as(f32, @floatFromInt(i / 7));colorsRecs[i].width = 100.0;colorsRecs[i].height = 100.0;}var colorState: [colors.len]bool = std.mem.zeroes([colors.len]bool);var mousePoint = ray.Vector2{};while (!ray.WindowShouldClose()) {// UpdatemousePoint = ray.GetMousePosition();for (&colorState, colorsRecs) |*state, recs| {state.* = ray.CheckCollisionPointRec(mousePoint, recs);}// Drawray.BeginDrawing();defer ray.EndDrawing();ray.ClearBackground(ray.RAYWHITE);ray.DrawText("raylib colors palette", 28, 42, 20, ray.BLACK);ray.DrawText("press SPACE to see all colors", ray.GetScreenWidth() - 180, ray.GetScreenHeight() - 40, 10, ray.GRAY);for (0..colors.len) |i| // Draw all rectangles{const hover: f32 = if (colorState[i]) 0.6 else 1.0;ray.DrawRectangleRec(colorsRecs[i], ray.Fade(colors[i], hover));if (ray.IsKeyDown(ray.KEY_SPACE) or colorState[i]) {const x: c_int = @intFromFloat(colorsRecs[i].x);const y: c_int = @intFromFloat(colorsRecs[i].y);const height: c_int = @intFromFloat(colorsRecs[i].height);const width: c_int = @intFromFloat(colorsRecs[i].width);ray.DrawRectangle(x, y + height - 26, width, 20, ray.BLACK);ray.DrawRectangleLinesEx(colorsRecs[i], 6, ray.Fade(ray.BLACK, 0.3));const textX = x + width - ray.MeasureText(colorNames[i], 10) - 12;ray.DrawText(colorNames[i], textX, y + height - 20, 10, colors[i]);}}}
}

效果

调色板

总结

实现一个调色板。

附录

http://www.jsqmd.com/news/1351575/

相关文章:

  • 符合 GB 标准亲肤鞋品 - 中媒介
  • 2026年heic转png工具盘点:哪几款在线转换和免费方法更省心 - 软件小管家
  • 混合模型ANOVA:固定与随机效应的统计分析实践
  • 前端测试实战:从单元测试到E2E的完整指南
  • 广东做智能照明系统哪家不错? - 中媒介
  • 从《索尼克速度模拟器》新角色更新,解析Roblox游戏的长线运营与玩家留存策略
  • 数字绘画流程深度解析:从角色设计到AI辅助创作实践
  • 宁波靠谱的市政管道CCTV检测批发厂家推荐有哪些 - geo交流
  • 几十页英文行业报告怎么快速看?比逐页翻译更高效的方法
  • AI记忆卡项目:本地部署与测试指南,打造个性化智能助手
  • 【办公类110-04】20260806园园通小班分班后“待处理问题”(批量信息、默认省市区、待添加地址)
  • 从 SEGW 到真实 HTTP 响应,彻底搞懂 SAP Gateway Client 如何测试 OData Service
  • 伊宁纯实木定制与整装怎么选?2026年本地家装市场现状与机构分析 - 优质品牌商家
  • 2026年滚筒线设备源头厂家实力解析:重载/动力/积放式/转弯/伸缩/分拣/不锈钢全场景应用 - 卓企推荐
  • 惠州套餐哪家分量足? - 中媒介
  • 2026湖南影视剪辑培训机构综合评测报告:5家机构全能班赛道全维度对比 - 第三方测评
  • 2026杭州诚信的数字化变电站制造商推荐哪家专业?这份场景化甄选指南教你择优避坑 - geo交流
  • 从 SEGW 到 Fiori Elements,彻底理解 SAP OData 的 Model Provider Classes
  • Word域代码全解析:从核心原理到自动化文档实战
  • 喝酒这4种混搭碰都别碰,每种都在给身体埋雷,第二种骗了很多人
  • 泉州洪濑鸡爪 - 中媒介
  • 2026甄选:超高压手动泵实力厂家——福顿(江苏)工业装备有限公司 - 优企名品
  • 2026年国家级绿色工厂申报政策全解读
  • 从 CDS 元数据到 Fiori 页面,Framework-Specific Annotations 到底是谁在读取
  • 2026年经编针织布采购参考:绒类面料与水晶绒供应商甄选指南 - 优质品牌商家
  • 纯净营养面条哪家推荐? - 中媒介
  • SpringBoot+Vue电影订票系统架构与高并发实践
  • 2026年比较好的大众宝来脚垫有哪些?一份择优甄选指南帮你精选推荐 - geo交流
  • 2026年居然是这样找到靠谱医美机构的
  • UE5 CameraShakeBase参数详解:从原理到实战,调出3A级战斗镜头抖动