跳转到内容

LNNBot/WhatCommands指令/wthsvg:修订间差异

此后如竟没有炬火,我便是唯一的光。
Cycwin留言 | 贡献
无编辑摘要
Cycwin留言 | 贡献
无编辑摘要
 
第24行: 第24行:
:在 (''x'', ''y'') 处绘制文本。
:在 (''x'', ''y'') 处绘制文本。
;<code>-扇形 ''r'' ''x'',''y'' ''a1'' ''a2''</code>
;<code>-扇形 ''r'' ''x'',''y'' ''a1'' ''a2''</code>
:绘制一个圆心在 (''x'',''y''),圆心角(顺时针)为''a1'',半径为''r'',起始角度(顺时针)为''a2''的扇形。''a2''可以缺省,默认值为0。
:绘制一个圆心在 (''x'', ''y''),圆心角(顺时针)为 ''a1'',半径为 ''r'' ,起始角度(顺时针)为 ''a2'' 的扇形。 ''a2'' 可以缺省,默认值为0。
图形操作(不包括 <code>-文字</code>)可以一次输入多组参数,用英文分号(<code>;</code>)分隔,此时将同时绘制多个同类图形并共用属性。建议在分号之后或前后均添加空格以便阅读。例如,绘制四个半径 50 单位,紧挨在一起的圆:<code>-圆形 50 100,100; 50 100,200; 50 200,100; 50 200,200</code>
图形操作(不包括 <code>-文字</code>)可以一次输入多组参数,用英文分号(<code>;</code>)分隔,此时将同时绘制多个同类图形并共用属性。建议在分号之后或前后均添加空格以便阅读。例如,绘制四个半径 50 单位,紧挨在一起的圆:<code>-圆形 50 100,100; 50 100,200; 50 200,100; 50 200,200</code>


第40行: 第40行:
:设置线段或描边的宽度为 ''d''。
:设置线段或描边的宽度为 ''d''。
;<code>旋转 ''a'' ''x'',''y''</code>
;<code>旋转 ''a'' ''x'',''y''</code>
:将图形沿点(''x'',''y'')旋转''a''度(顺时针)。
:将图形沿点 (''x'', ''y'') 旋转 ''a'' 度(顺时针)。
;<code>渐变 ''c1'' ''x1'',''y1'' ''c2'' ''x2'',''y2''</code>
;<code>渐变 ''c1'' ''x1'',''y1'' ''c2'' ''x2'',''y2''</code>
;<code>渐变描边 ''c1'' ''x1'',''y1'' ''c2'' ''x2'',''y2''</code>
;<code>渐变描边 ''c1'' ''x1'',''y1'' ''c2'' ''x2'',''y2''</code>

2025年12月22日 (一) 20:16的最新版本

WhatCommands 指令 wthsvg 可根据输入的一系列中文指令绘制图像。主要作者为 CycwinDGCK81LNN 补充完善部分功能。

用法

¿¿wthsvg 指令...

wthsvg 的参数中每行为一条指令,指令分为操作和属性,操作以横杠(-)开头,属性跟在其所属的操作之后。

操作

-画布 w h
指定画布宽为w,高为h,一般写在最开头作为第一个操作。
-左下角坐标
特殊操作:此操作执行后,后续的所有操作中坐标原点在左下角,纵轴向上。未使用此操作时原点在左上角,纵轴向下。
-线段 x1,y1 x2,y2
绘制从 (x1, y1) 到 (x2, y2) 的线段。
线段目前没有默认颜色,必须通过颜色属性手动设置颜色才可绘制。
-圆形 r x,y
绘制一个圆心在 (x, y),半径为 r 的圆形。
-矩形 x1,y1 x2,y2
绘制一个对角为 (x1, y1) 与 (x2, y2),平行于坐标轴的矩形。可以缺省任意一个坐标,默认值为(0,0)。
-多边形 x1,y1 x2,y2 x3,y3...
以给定的一系列坐标为顶点绘制多边形。
-文字 x,y 内容
在 (x, y) 处绘制文本。
-扇形 r x,y a1 a2
绘制一个圆心在 (x, y),圆心角(顺时针)为 a1,半径为 r ,起始角度(顺时针)为 a2 的扇形。 a2 可以缺省,默认值为0。

图形操作(不包括 -文字)可以一次输入多组参数,用英文分号(;)分隔,此时将同时绘制多个同类图形并共用属性。建议在分号之后或前后均添加空格以便阅读。例如,绘制四个半径 50 单位,紧挨在一起的圆:-圆形 50 100,100; 50 100,200; 50 200,100; 50 200,200

属性

设置颜色时,可以使用方括号括起并以空格分隔的 RGB 颜色值([r g b]),CSS 颜色语法(包括 rgb(R,G,B)、井号开头的十六进制颜色值、英文关键字颜色名)和我们预先定义的中文颜色名表示。

背景 c
只对 -画布 指令有效:设置画布背景颜色为 c。可以是“透明”。未设置时默认为白色。
颜色 c
设置图形的颜色为 c
对于除线段之外的图形,未设置时默认为黑色;可将颜色设置为“透明”后再设置描边属性来绘制空心的图形。
描边 c
为图形添加颜色为 c 的描边。
对于线段,与颜色属性等价。
粗细 d
设置线段或描边的宽度为 d
旋转 a x,y
将图形沿点 (x, y) 旋转 a 度(顺时针)。
渐变 c1 x1,y1 c2 x2,y2
渐变描边 c1 x1,y1 c2 x2,y2
设置图形(或描边)为渐变色,从 (x1, y1) 处颜色 c1 平滑过渡到 (x2, y2) 处颜色 c2
(x1, y1)、(x2, y2) 两个点可以连成一条线段,称为渐变轴,颜色的 RGB 值在渐变轴上分别均匀变化;图形上任何一个其他的点,都与渐变轴上离那个点最近的一个点的颜色相同。也就是说,让渐变轴沿着垂直于自身的方向平移,扫过的面积里颜色均匀变化,而没有扫过的地方颜色与相应端点的颜色相同,即 c1c2
渐变 c0 x1,y1 c1 t1 c2 t2 ... cn x2,y2
渐变描边 c0 x1,y1 c1 t1 c2 t2 ... cn x2,y2
除了渐变轴的两个端点外,可以在渐变轴上选定更多控制点并设置颜色,每两个相邻控制点之间颜色的 RGB 值都会均匀变化。每个中间控制点由一个颜色 c 和一个位置比值定义,比值可以是一个百分比 t% 或分数 m/n,表示控制点位置到渐变轴起点的距离与渐变轴长度的比值。若两个中间控制点的位置重合,会形成一个颜色突变,分界线垂直于渐变轴。
虚线 l d
设置线段或描边为许多短线组成的虚线,短线长度为 l,每两条短线之间空出 d 的距离。
dl 相同时可省略 d
虚线 l1 d1 l2 d2 l3 ...
高级虚线:从图形轮廓的起点开始先画长 l1 的短线,空出 d1 的距离,再画 l2 的短线,空出 d2,以此类推,直到最后一组 lndn 后循环。若最后一组只有 ln 没有 dn(即总共有奇数个数字),则最后一个短线长度 ln 跟循环回开头的第一个短线长度 l1 合并为一条长 ln + l1 的短线,之后再空出 d1 的距离,画 l2 的短线……这样继续下去。
平头
取消线段或虚线两端默认存在的小半圆,使本来圆头的线变为平头。
方头
将线段或虚线两端本来的小半圆改为小长方形,类似于平头但是视觉上使线的两端各延长了线宽度的一半。
字号 s
设置文字的大小为 s
字体 名称
设置文字使用的字体族名称。
字重 w
设置字重(文字形状的粗细)为 w
字重是一个 1000 以内的正整数,未设置时默认为 400,即常规。w 也可以是汉字“”,表示 700,即粗体。只有部分字体支持任意设置字重,多数只支持几个固定的值,如果字体不支持你设置的字重,会自动选择一个比较接近的可用值。
字宽 w
设置字宽为 w%。
字宽是一个 50% 到 200% 之间的百分数,未设置时为 100%。只有部分字体支持设置字宽。
斜体
使文字倾斜(使用意大利体的字母)。
斜体 a
斜体 后面也可以跟一个角度 a,表示让文字倾斜大约 a 度。正常的倾斜体是 14 度。很少有字体支持任意设置倾斜角度。
左对齐
右对齐
让文字的左/右端对准设置的坐标。未设置时,默认是让文字的中心落在设置的坐标处。

示例

待添加

一些想说的

这条命令实际上是受一位有着视力障碍的群友激发而产生的。这位群友在我们不知道的地方打听到了某款电脑专用的盲用画图软件(经过LNN的逆向可知这是一个Python程序,根据原作者的描述实际上是给盲人写论文画示例图用的),又打听到LNN有个LNNBot(大概因为他也是玩造语的)于是前来询问LNN能否将这个盲用画图软件移植到LNNBot上使用。我一时兴起建了一个SVGpath解析器,后来觉得太难用于是搓出来了wthsvg的最初模样:只有画布、线段,以及颜色、描边。我很不想很不想辜负这位发言极其真诚的群友,我一再声明:这不符合那款软件的语法!这里的漏洞还有很多!但这位群友仍然在鼓励我(他截止目前已画出来了许多我们认为不错的作品),于是在大概一周内有了整整八个操作。LNN的加入实际上以我们替换中文颜色的词库匮乏而起,他在渐变的语法判定上、圆形的语法转化上以及关于字体的所有属性等等都做出了巨大的贡献!包括这篇文档也是他写的。我很感谢一直支持这个项目的人(尽管这项目才开展了两周不到,我编辑时离月考只有两三天了),包括代码贡献者,指令使用者(尽管有预防)。能做成一个对他人有着帮助的wc指令我感到高兴至极!即便不为人知,这件事已成为我人生漆黑夜空中一颗不亮的闪星,在我极匮乏的内心世界中照耀。十分感谢各位。我们会在除这个指令外的世界中共同走下去,可能在将来不再有互联网上的联系,但这段旅程我会铭记于心。(好申必的升华啊)

 
Cycwin