2 个版本
0.1.6 | 2019 年 8 月 29 日 |
---|---|
0.1.5 | 2019 年 8 月 29 日 |
#676 in GUI
33KB
640 行
termi-graphics
它是做什么的?
termi-graphics 是一个 Rust crate(库),用于构建基于终端的图形和图形界面。
termi-graphics 提供了使用画布和屏幕进行低级图形设计的选项,并可以使用 Animation 结构连续运行它们。
termi-graphics 目前最适合(目前)与 Ubuntu 终端配色方案一起使用,但它仍然可能在某些 Windows 和 Mac 计算机上运行。
很快就会有其他 crate 专门设计用于在 CLI 之外的其他地方创建其他低级或高级图形界面。
如何安装它?
您可以使用 cargo
:~$ cargo install termi-graphics
或者您也可以克隆此存储库
:~$ git clone https://github.com/l-tools/termi-graphics termi-graphics
:~$ cd termi-graphics
:~$ cargo build
如何使用它?
首先导入 crate
extern crate termi_graphics;
use termi_graphics::pixel_art; //this is the most basic useable part of the crate
有两种方法
第一种是自行创建像素布局(在我们的情况下是二维向量),如下所示
fn main(){
let mut shape1 = Vec::new();
//smily face
shape1.push(vec![2,2,0,2,2]);
shape1.push(vec![2,2,0,2,2]);
shape1.push(vec![0,0,0,0,0]);
shape1.push(vec![0,0,1,0,0]);
shape1.push(vec![8,0,0,0,8]);
shape1.push(vec![8,8,8,8,8]);
screen1.attach_pixels(&shape1,1,1).unwrap();
//simply print it once:
screen1.print_screen();
//or present it by animation:
let vecan = vec![screen1];
use termi_graphics::animation::Animation;
let anim = Animation::new(vecan,15,3);
}
这是一种相当繁琐的方法,因此还有第二种方法
fn main(){
use termi_graphics::Shapes::{rectangle,line,sqaure,triangle};
let shape2 =square(2,PixelColors::Blue).unwrap() ;
let shape3 =line(5,PixelColors::White,false).unwrap();
let shape4 =square(1,PixelColors::Red).unwrap();
let shape5 =rectangle(9,10,PixelColors::Magenta).unwrap();
let shape6 =triangle(9,PixelColors::Magenta).unwrap();
let mut vecer = Vec::new();
vecer.push(vec![8,0,0,0,8]);
let mut canvas1 = Canvas::new(30,30,PixelColors::Black).unwrap();
let mut screen1 = Screen::new(35,35,PixelColors::Black).unwrap();
canvas1.attach(&shape5,8,8).unwrap();
canvas1.attach(&shape2,10,10).unwrap();
canvas1.attach(&shape2,13,10).unwrap();
canvas1.attach(&shape4,12,13).unwrap();
canvas1.attach(&vecer,10,14).unwrap();
canvas1.attach(&shape3,10,15).unwrap();
canvas1.attach(&shape6,16,16).unwrap();
screen1.attach(&canvas1);
//simply print it once:
screen1.print_screen();
//or present it by animation:
let vecan = vec![screen1];
use termi_graphics::animation::Animation;
let anim = Animation::new(vecan,15,3);
}