我想让一个C#控制台应用程序从http://www.asciitable.com/打印扩展的ASCII代码.特别是我正在看线条艺术角色:169,170,179-218.不幸的是,当我尝试时,我最终获得了218的'Ú',并希望从http://www.csharp411.com/ascii-table/看到其他角色.
我知道ASCII只指定字符代码0 - 127.我发现另一篇文章引用了SetConsoleOutputCP(),但是无法让它在C#类中工作或找到如何执行此操作的示例.
是否可以在C#控制台应用程序中打印艺术字符?如果是,有人可以提供示例或代码的URL吗?
Jos*_*ers 21
一个小程序,它修改Console.OutputEncoding属性使用的代码页以使用您想要的字符:
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.GetEncoding(1252);
Console.WriteLine((char) 169);
Console.WriteLine((char) 170);
for(char c = (char)179; c <= (char)218; ++c)
{
Console.WriteLine(c);
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
所以我继续前进,查找了盒子艺术的Unicode等价物.还有一些额外的字形可能对您有用.维基百科页面列出了他们所有的代码点.
我把它们放在一起试试看:
class Program
{
static void Main(string[] args)
{
for(int i = 0x2500; i <= 0x2570; i += 0x10)
{
for(int c = 0; c <= 0xF; ++c)
{
Console.Write((char) (i + c));
}
Console.WriteLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,很多字形只是出现?,但我们习惯在旧的ASCII游戏中看到的标准盒子字形确实适合我.希望这些对您有用.
要在控制台上查看正确的 ascii,我只需这样做:
Console.OutputEncoding = System.Text.Encoding.GetEncoding(28591);
为了理解 ASCII 图表,我写了下面的代码:
using System;
namespace AsciiChart
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.GetEncoding(28591);
for (int i = 0; i < 256; i++) {
Console.Write(i+"=> ["+(char)i +"] \n");
}
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我们开始绘制,示例1:
using System;
namespace AsciiBorder
{
class Program
{
static void Main(string[] args)
{
int topleft = 218;
int hline = 196;
int topright = 191;
int vline = 179;
int bottomleft = 192;
int bottomright = 217;
Console.OutputEncoding = System.Text.Encoding.GetEncoding(28591);
//draw top left corner
Write(topleft);
//draw top horizontal line
for (int i = 0; i < 10; i++)
Write(hline);
//draw top right corner
Write(topright);
Console.WriteLine();
//draw left and right vertical lines
for (int i = 0; i < 6; i++)
{
Write(vline);
for (int k = 0; k < 10; k++) {
Console.Write(" ");
}
WriteLine(vline);
}
//draw bottom left coner
Write(bottomleft);
//draw bottom horizontal line
for (int i = 0; i < 10; i++)
Write(hline);
//draw bottom right coner
Write(bottomright);
Console.ReadKey();
}
static void Write(int charcode)
{
Console.Write((char)charcode);
}
static void WriteLine(int charcode)
{
Console.WriteLine((char)charcode);
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
已完成的 3x3 Tic-Tac-Toe 类棋盘绘图代码:示例 2
代码:
using System;
namespace AsciiBorder
{
class Program
{
const int topleft = 218, hline = 196, topright = 191, vline = 179, bottomleft = 192, bottomright = 217, cross = 197, topT = 194, bottomT = 193, leftT = 195, rightT = 180;
const int space = 10/*this determine size of the single cell*/, spacer_ex = (space / 2) + 1;
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.GetEncoding(28591);
Console.Title = "3x3 Board";
DrawTop();
DrawMidSpacer();
DrawMiddle();
DrawMidSpacer();
DrawMiddle();
DrawMidSpacer();
DrawBottom();
Console.ReadKey();
}
static void DrawBottom() {
#region bottom
Write(bottomleft);
for (int i = 0; i < space; i++)
Write(hline);
Write(bottomT);
for (int i = 0; i < space; i++)
Write(hline);
Write(bottomT);
for (int i = 0; i < space; i++)
Write(hline);
Write(bottomright);
Console.WriteLine();
#endregion
}
static void DrawMiddle() {
#region middle
Write(leftT);
for (int i = 0; i < space; i++)
Write(hline);
Write(cross);
for (int i = 0; i < space; i++)
Write(hline);
Write(cross);
for (int i = 0; i < space; i++)
Write(hline);
Write(rightT);
Console.WriteLine();
#endregion
}
static void DrawMidSpacer() {
#region middlespacer
for (int x = 0; x < spacer_ex; x++)
{
Write(vline);
for (int i = 0; i < space; i++)
Console.Write(" ");
Write(vline);
for (int i = 0; i < space; i++)
Console.Write(" ");
Write(vline);
for (int i = 0; i < space; i++)
Console.Write(" ");
Write(vline);
Console.WriteLine();
}
#endregion
}
static void DrawTop() {
#region top
Write(topleft);
for (int i = 0; i < space; i++)
Write(hline);
Write(topT);
for (int i = 0; i < space; i++)
Write(hline);
Write(topT);
for (int i = 0; i < space; i++)
Write(hline);
Write(topright);
Console.WriteLine();
#endregion
}
static void Write(int charcode)
{
Console.Write((char)charcode);
}
static void WriteLine(int charcode)
{
Console.WriteLine((char)charcode);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42878 次 |
| 最近记录: |