ASCII动画(仅供娱乐)





5.00/5 (1投票)
2002年5月21日
3分钟阅读

88477

1430
使用此 COM 对象在窗口中绘制和动画 ASCII 字符。
引言
Asciimation 是 ASCII 动画的缩写。 类似于简陋版的 DirectX 或 Window 的 GDI。 在这里,我向您展示一个小型的 COM 库,供您这些富有创造力的人士尝试这种新的艺术形式。
重点是什么?
没有任何重点,我只是为了好玩才做的。 我受到了 星球大战 Asciimation 的启发,并认为,我可以让那些想成为 ASCII 艺术家的人更容易一些。
IAsciiAPI 接口方法
Initialize(DWORD hwnd, [out, retval] VARIANT_BOOL* bInitialized);
SetBackColor(int R, int G, int B);
SetBackMode(int nMode);
SetForeColor(int R, int G, int B);
GetWidth([out, retval] int* width);
GetHeight([out, retval] int* height);
ClearScreen();
DrawString(BSTR bstrString, int x, int y);
Circle(int x, int y, int radius, int step, short nAsciiCode,
VARIANT_BOOL bFilled);
Arc(int x, int y, int radius, int degfrom, int degto, int step,
short nAsciiCode, VARIANT_BOOL bFilled);
Rectangle(int left, int top, int right, int bottom, short nAsciiCode,
VARIANT_BOOL bFilled);
CharBlit(BSTR bstrCharArray, int Width, int Height, int DestX,
int DestY, short nAsciiMask);
初始化
将要绘制 Asciimation 的窗口的 HWND
发送到此方法。 没有它,它就无法绘制任何东西。 我曾想过让 Asciimation 成为一个控件,但我认为将其制成更像 API 的形式会更好。
SetBackMode
设置 nBackMode
成员变量,该变量用于设置文本的背景模式(OPAQUE
或 TRANSPARENT
)。
SetBackColor
设置 crBackColor
成员变量,该变量用于设置文本的背景颜色。
SetForeColor
设置 crForeColor
成员变量,该变量用于设置文本的颜色。
GetWidth
返回适合窗口宽度的字符数。
GetHeight
返回适合窗口高度的字符数。
ClearScreen
使用当前的背景模式和背景颜色在窗口的宽度和高度上绘制空格。
DrawString
在给定坐标的窗口上绘制一个字符数组。
圆
使用 nAsciiCode
参数绘制一个字符圆,其中心位于 (x
,y
),半径为 radius
。 step
参数将绘制一个断开的圆,仅每 step
度绘制一次字符。 要填充圆,请设置 bFilled = VARIANT_TRUE
,否则设置为 VARIANT_FALSE
。
Arc
使用 nAsciiCode
参数绘制一个字符弧,其中心位于 (x
,y
),半径为 radius
,从 degfrom
度到 degto
度。 step
参数将绘制一个断开的弧,仅每 step
度绘制一次字符。
矩形
使用 nAsciiCode
参数绘制一个字符矩形,其角位于 (left
, top
) - (right
, bottom
)。 要填充矩形,请设置 bFilled = VARIANT_TRUE
,否则设置为 VARIANT_FALSE
。
CharBlit
将 bstrCharArray
字符数组绘制到窗口中的 (DestX
, DestY
) 位置。 所有字符都将显示在一个 Width
X Height
矩形中,但 nAsciiMask
字符除外,该字符根本不会被绘制。
结论
如果您发现这段代码以任何方式有用,那就太棒了! 如果没有,那也没办法,但我希望您可以从中获得一些乐趣。
这是演示项目中的一些屏幕截图
如果您对改进或向 Asciimation 添加方法有任何想法,请随时给我发送电子邮件或在此处留言,或者主动修改代码。
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。