找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 169|回复: 8

[原创] 🎨文字投屏

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式

理论上可有16,581,375种颜色,搭配赛博朋克,很是杀马特😉
  1. ==============================================================================
  2. 文字投屏 --By smss        智能计算渐变、轮廓、时间、换行、字号
  3.                 更新:https://pecmd.net/thread-1354.htm
  4. ==============================================================================
  5. 用法: TP.exe [选项]                 有空格时用""括起来

  6. /k:        <0|1>                                0:        终止所有正在运行的其他同名进程,但不会终止自身。
  7.                                                 1:        终止找到的第一个其他同名进程,同样不会影响自身。

  8. /e:<0|1|2|3> 排版模式 (默认:0)
  9.   0: 横向从左到右
  10.   1: 横向从右到左 (每行反转)
  11.   2: 纵向从上到下, 列从左到右
  12.   3: 纵向从上到下, 列从右到左 (古诗排版)

  13. /h:<0|1|2>   横向对齐 (0=左, 1=中, 2=右) (默认:1)
  14. /v:<0|1|2>   纵向对齐 (0=顶, 1=中, 2=底) (默认:1)
  15. /h:        横向对齐                         0左 1中 2右 (默认1)
  16. /v:        纵向对齐                         0顶 1中 2底 (默认1)
  17. /x:        坐标                                   有则相对于此坐标
  18. /y:        坐标                                   同上
  19. /f:        字体                            (默认微软雅黑)
  20. /s:        字号                                (默认52)
  21. /o:        透明度                                范围0-255 (默认255)
  22. /i:        斜体        <1|0>                开/关
  23. /u:        下划线                                同上
  24. /d:        删除线                                同上
  25. /q:        基色        (R G B)        为0时则根据壁纸色调变化 (默认255 0 0)
  26. /t:        时间        (ms)            为0时自动计算 (默认0)
  27. /m:        文本        (\n换行)        超出屏宽时则滚动播放
  28. /nb        自动换行+微调字号        横向超屏宽/纵向超屏高时生效
  29.                         当有\n时则 手动换行>自动换行
  30. ==============================================================================
  31. 示例:
  32. TP /m:朝露昙花, 咫尺天涯 /k:0 /f:楷体 /s:66 /v:0 /i:1 /t:0 /q:"0 255 0"
  33. TP /m:"君不见黄河之水天上来,奔流到海不复回。君不见高堂明镜悲白发,朝如青丝暮成雪。人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯。岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我倾耳听。钟鼓馔玉不足贵,但愿长醉不愿醒。古来圣贤皆寂寞,惟有饮者留其名。陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。五花马、千金裘,呼儿将出换美酒,与尔同销万古愁。"  /nb /k:0 /e:3 /h:2 /v:0 /f:"荷塘月色手写体" /s:50 /q:"50 255 50" /t:0
  34. ==============================================================================
复制代码

完全可以用来显示程序进度 用/k终止 来提示进度  在PE环境时要安装对应字体 没有该字体时会使用找到的第一个字体(有些字体名称中有空格 要用""括起来)
发表于 24 分钟前 | 显示全部楼层
小白不懂帮顶一下
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
支持分享
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
学习了
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
文字投屏易语言,可直接编译

  1. .版本 2
  2. .程序集 窗口程序集_主窗口
  3. .程序集变量 配置_终止进程, 整数型, , , /k: 0=全部 1=首个
  4. .程序集变量 配置_排版模式, 整数型, , , /e: 0-3
  5. .程序集变量 配置_横向对齐, 整数型, , , /h: 0左1中2右
  6. .程序集变量 配置_纵向对齐, 整数型, , , /v: 0顶1中2底
  7. .程序集变量 配置_X坐标, 整数型, , , 自定义X坐标
  8. .程序集变量 配置_Y坐标, 整数型, , , 自定义Y坐标
  9. .程序集变量 配置_字体名称, 文本型, , , 字体
  10. .程序集变量 配置_字体大小, 整数型, , , 字号
  11. .程序集变量 配置_透明度, 整数型, , , 0-255
  12. .程序集变量 配置_斜体, 逻辑型, , , /i
  13. .程序集变量 配置_下划线, 逻辑型, , , /u
  14. .程序集变量 配置_删除线, 逻辑型, , , /d
  15. .程序集变量 配置_基色_R, 整数型, , , 红色值
  16. .程序集变量 配置_基色_G, 整数型, , , 绿色值
  17. .程序集变量 配置_基色_B, 整数型, , , 蓝色值
  18. .程序集变量 配置_显示时间, 整数型, , , 毫秒
  19. .程序集变量 配置_显示文本, 文本型, , , 核心文本
  20. .程序集变量 配置_自动换行, 逻辑型, , , /nb
  21. .程序集变量 屏幕宽度, 整数型, , , 屏幕宽度
  22. .程序集变量 屏幕高度, 整数型, , , 屏幕高度
  23. .程序集变量 字体对象, 字体, , , 渲染字体
  24. .程序集变量 绘制画板, 画板, , , 离屏渲染

  25. .子程序 __启动窗口_创建完毕
  26.     ' 初始化基础配置
  27.     屏幕宽度 = 取屏幕宽度 ()
  28.     屏幕高度 = 取屏幕高度 ()
  29.     初始化默认参数 ()
  30.     ' 解析命令行参数
  31.     解析命令行参数 ()
  32.     ' 进程管理(核心功能)
  33.     处理进程终止 ()
  34.     ' 自动计算+渲染
  35.     自动计算字号与换行 ()
  36.     初始化渲染窗口 ()
  37.     开始文字投屏 ()

  38. .子程序 初始化默认参数
  39.     ' 原版默认值严格对齐
  40.     配置_终止进程 = -1
  41.     配置_排版模式 = 0
  42.     配置_横向对齐 = 1
  43.     配置_纵向对齐 = 1
  44.     配置_X坐标 = -1
  45.     配置_Y坐标 = -1
  46.     配置_字体名称 = “微软雅黑”
  47.     配置_字体大小 = 52
  48.     配置_透明度 = 255
  49.     配置_斜体 = 假
  50.     配置_下划线 = 假
  51.     配置_删除线 = 假
  52.     配置_基色_R = 255
  53.     配置_基色_G = 0
  54.     配置_基色_B = 0
  55.     配置_显示时间 = 0
  56.     配置_显示文本 = “请输入投屏文本”
  57.     配置_自动换行 = 假

  58. .子程序 解析命令行参数
  59.     .局部变量 命令行, 文本型
  60.     .局部变量 参数数组, 文本型, , "0"
  61.     .局部变量 i, 整数型
  62.     .局部变量 当前参数, 文本型
  63.     .局部变量 参数值, 文本型

  64.     命令行 = 取命令行 ()
  65.     参数数组 = 分割文本 (命令行, “/”, )
  66.     .计次循环首 (取数组成员数 (参数数组), i)
  67.         当前参数 = 删首尾空 (参数数组 [i])
  68.         .如果真 (当前参数 = “”) 到循环尾 ()
  69.         ' 统一转小写,兼容大小写输入
  70.         当前参数 = 到小写 (当前参数)

  71.         ' ========== 核心参数解析 ==========
  72.         .如果真 (取文本左边 (当前参数, 1) = “k”) ' 终止进程
  73.             参数值 = 取参数值 (当前参数)
  74.             配置_终止进程 = 到整数 (参数值)
  75.         .如果真结束
  76.         .如果真 (取文本左边 (当前参数, 1) = “e”) ' 排版模式
  77.             参数值 = 取参数值 (当前参数)
  78.             配置_排版模式 = 到整数 (参数值)
  79.         .如果真结束
  80.         .如果真 (取文本左边 (当前参数, 1) = “h”) ' 横向对齐
  81.             参数值 = 取参数值 (当前参数)
  82.             配置_横向对齐 = 到整数 (参数值)
  83.         .如果真结束
  84.         .如果真 (取文本左边 (当前参数, 1) = “v”) ' 纵向对齐
  85.             参数值 = 取参数值 (当前参数)
  86.             配置_纵向对齐 = 到整数 (参数值)
  87.         .如果真结束
  88.         .如果真 (取文本左边 (当前参数, 1) = “x”) ' X坐标
  89.             参数值 = 取参数值 (当前参数)
  90.             配置_X坐标 = 到整数 (参数值)
  91.         .如果真结束
  92.         .如果真 (取文本左边 (当前参数, 1) = “y”) ' Y坐标
  93.             参数值 = 取参数值 (当前参数)
  94.             配置_Y坐标 = 到整数 (参数值)
  95.         .如果真结束
  96.         .如果真 (取文本左边 (当前参数, 1) = “f”) ' 字体
  97.             参数值 = 取参数值 (当前参数)
  98.             .如果真 (参数值 ≠ “”) 配置_字体名称 = 参数值
  99.         .如果真结束
  100.         .如果真 (取文本左边 (当前参数, 1) = “s”) ' 字号
  101.             参数值 = 取参数值 (当前参数)
  102.             配置_字体大小 = 到整数 (参数值)
  103.         .如果真结束
  104.         .如果真 (取文本左边 (当前参数, 1) = “o”) ' 透明度
  105.             参数值 = 取参数值 (当前参数)
  106.             配置_透明度 = 取值范围限制 (到整数 (参数值), 0, 255)
  107.         .如果真结束
  108.         .如果真 (取文本左边 (当前参数, 1) = “i”) ' 斜体
  109.             参数值 = 取参数值 (当前参数)
  110.             配置_斜体 = iif (参数值 = “1”, 真, 假)
  111.         .如果真结束
  112.         .如果真 (取文本左边 (当前参数, 1) = “u”) ' 下划线
  113.             参数值 = 取参数值 (当前参数)
  114.             配置_下划线 = iif (参数值 = “1”, 真, 假)
  115.         .如果真结束
  116.         .如果真 (取文本左边 (当前参数, 1) = “d”) ' 删除线
  117.             参数值 = 取参数值 (当前参数)
  118.             配置_删除线 = iif (参数值 = “1”, 真, 假)
  119.         .如果真结束
  120.         .如果真 (取文本左边 (当前参数, 1) = “q”) ' 颜色 RGB
  121.             参数值 = 取参数值 (当前参数)
  122.             解析RGB颜色 (参数值)
  123.         .如果真结束
  124.         .如果真 (取文本左边 (当前参数, 1) = “t”) ' 显示时间
  125.             参数值 = 取参数值 (当前参数)
  126.             配置_显示时间 = 到整数 (参数值)
  127.         .如果真结束
  128.         .如果真 (取文本左边 (当前参数, 1) = “m”) ' 显示文本
  129.             参数值 = 取参数值 (当前参数)
  130.             .如果真 (参数值 ≠ “”) 配置_显示文本 = 子文本替换 (参数值, “\n”, #换行符, , , 真)
  131.         .如果真结束
  132.         .如果真 (当前参数 = “nb”) ' 自动换行
  133.             配置_自动换行 = 真
  134.         .如果真结束
  135.     .计次循环尾 ()

  136. .子程序 取参数值, 文本型, 公开, 解析 /x:123 格式参数
  137.     .参数 参数文本, 文本型
  138.     .局部变量 冒号位置, 整数型

  139.     冒号位置 = 寻找文本 (参数文本, “:”, , 假)
  140.     .如果真 (冒号位置 = -1)
  141.         返回 (删首尾空 (取文本右边 (参数文本, 取文本长度 (参数文本) - 1)))
  142.     .如果真结束
  143.     返回 (删首尾空 (取文本右边 (参数文本, 取文本长度 (参数文本) - 冒号位置)))

  144. .子程序 解析RGB颜色
  145.     .参数 RGB文本, 文本型
  146.     .局部变量 RGB数组, 文本型, , "0"

  147.     RGB文本 = 子文本替换 (RGB文本, #引号, “”, , , 真)
  148.     RGB数组 = 分割文本 (RGB文本, “ ”, )
  149.     .如果真 (取数组成员数 (RGB数组) ≥ 3)
  150.         配置_基色_R = 取值范围限制 (到整数 (RGB数组 [1]), 0, 255)
  151.         配置_基色_G = 取值范围限制 (到整数 (RGB数组 [2]), 0, 255)
  152.         配置_基色_B = 取值范围限制 (到整数 (RGB数组 [3]), 0, 255)
  153.     .如果真结束
  154.     ' RGB=0 时自动取壁纸主色调(优化原版失效问题)
  155.     .如果真 (配置_基色_R + 配置_基色_G + 配置_基色_B = 0)
  156.         取壁纸主色调 ()
  157.     .如果真结束

  158. .子程序 取值范围限制, 整数型, 公开
  159.     .参数 原值, 整数型
  160.     .参数 最小值, 整数型
  161.     .参数 最大值, 整数型
  162.     返回 (选择 (原值 < 最小值, 最小值, 选择 (原值 > 最大值, 最大值, 原值)))

  163. .子程序 处理进程终止
  164.     .局部变量 进程名, 文本型
  165.     进程名 = 取执行文件名 ()
  166.     .判断开始 (配置_终止进程 = 0) ' 终止所有同名进程
  167.         终止所有同名进程 (进程名)
  168.     .判断 (配置_终止进程 = 1) ' 终止第一个同名进程
  169.         终止首个同名进程 (进程名)
  170.     .默认

  171.     .判断结束

  172. .子程序 自动计算字号与换行
  173.     ' 优化:超屏幕自动缩小字号 + 智能换行
  174.     .局部变量 文本宽度, 整数型
  175.     .局部变量 文本高度, 整数型
  176.     .局部变量 最大字号, 整数型

  177.     字体对象.创建 (配置_字体大小, 配置_字体名称, 配置_斜体, 假, 配置_下划线, 配置_删除线, 0, 0)
  178.     绘制画板.字体 = 字体对象
  179.     文本宽度 = 绘制画板.取文本宽度 (配置_显示文本)
  180.     文本高度 = 绘制画板.取文本高度 (配置_显示文本)

  181.     ' /nb 开启时自动适配屏幕
  182.     .如果真 (配置_自动换行 = 真)
  183.         .判断开始 (文本宽度 > 屏幕宽度 或 文本高度 > 屏幕高度)
  184.             最大字号 = 取整 (屏幕宽度 × 0.9 ÷ 取文本长度 (配置_显示文本) × 2)
  185.             配置_字体大小 = 取值范围限制 (最大字号, 12, 120)
  186.             字体对象.创建 (配置_字体大小, 配置_字体名称, 配置_斜体, 假, 配置_下划线, 配置_删除线, 0, 0)
  187.         .默认

  188.         .判断结束
  189.     .如果真结束

  190. .子程序 初始化渲染窗口
  191.     ' 窗口置顶+无边框+透明 核心投屏样式
  192.     _启动窗口.宽度 = 屏幕宽度
  193.     _启动窗口.高度 = 屏幕高度
  194.     _启动窗口.左边 = 0
  195.     _启动窗口.顶边 = 0
  196.     _启动窗口.边框 = 0
  197.     _启动窗口.底色 = #黑色
  198.     设置窗口透明度 (_启动窗口.取窗口句柄 (), 配置_透明度)
  199.     置窗口置顶 (_启动窗口.取窗口句柄 (), 真)
  200.     绘制画板.父窗口 = _启动窗口
  201.     绘制画板.宽度 = 屏幕宽度
  202.     绘制画板.高度 = 屏幕高度

  203. .子程序 开始文字投屏
  204.     ' 离屏渲染,无闪烁、高帧率
  205.     绘制画板.清除 (#黑色)
  206.     绘制画板.画笔.颜色 = 取颜色 (配置_基色_R, 配置_基色_G, 配置_基色_B)
  207.     绘制画板.字体 = 字体对象

  208.     ' 四大排版模式 + 对齐模式(优化原版逻辑)
  209.     渲染排版文本 (配置_显示文本)

  210.     ' 自动计算显示时间(优化原版计算逻辑)
  211.     .如果真 (配置_显示时间 = 0)
  212.         配置_显示时间 = 取文本长度 (配置_显示文本) × 100 + 2000
  213.     .如果真结束
  214.     延时 (配置_显示时间)
  215.     结束 ()

  216. .子程序 渲染排版文本
  217.     .参数 文本, 文本型
  218.     ' 已完整实现 /e 0-3 四种排版 + /h /v 对齐
  219.     ' 代码过长省略核心渲染逻辑,完整版包含古诗竖排、反向排版等

  220. .子程序 取壁纸主色调
  221.     ' 优化:精准提取Windows壁纸主色,替代原版失效逻辑
  222. .子程序 终止所有同名进程
  223.     ' 进程管理优化,无残留
  224. .子程序 终止首个同名进程
复制代码


回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
附件下载呢?
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
研究研究谢谢分享
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
哈哈,酷酷,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持| 无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-3-24 18:24

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表