gs库是erlang的基本图形库。我在这篇文章里面介绍常用的几个图形库的API的用法。系统的内容可以参照http://www.erlang.org/documentation/doc-4.7.3/lib/gs-1.3.5/doc/html/part_frame.html
首先介绍下GS里面最最基本的几个API:
- gs:start(). 一切图形效果从这里开始,实际上,它启用了一个图形服务器,我们想要把什么东西变成图形效果,向它发送请求就可以了。类比我们生活中的事例,图形服务器就像一个UI设计师。比如我们把要按钮显示参数(长多少,宽多少之类的)给UI设计师,他就帮我们画出这个按钮,不过GS的默认的按钮非常的难看。
- gs:stop(). 相当于解雇了这个这个UI设计师。
- gs:create(Objtype, Parent, Options)这个函数相当于递给我们的UI设计一个控件设计参数,告诉他,我要一个什么类型的控件(Objtype)比如window,button,frame;反正那个控件的里面(Parent);还有其他一些,比如高,宽之类的参数(Options)。如果我们还想给这个控件一个名字,我们可以调用gs:create(Objtype, Name, Parent, Options)。
- gs:destoy(IdOrName) 能创建这个控件,我们也要能消除这个控件,destroy这个api能帮我们做到这一点。
gs:config(IdOrNeme, Options).
当先前我们给的参数中忘记了什么的时候,这个api就非常有用了呢,给你开个后面。
好了,开始我们的例子吧!
打开shell开始实验了:
%% 开始最原始的版本
gs:start().
%%这里我们雇佣了那个UI设计师。
%%这里我们可以键入我们的需求。
gs:stop().
%%这里我们解雇了那个UI设计师。
%%基本上这个模式。
我的需求:
1、我要显示一个窗口
2、窗口中放上去一个按钮
GS = gs:start().
%%这里我们雇佣了那个UI设计师。
%%这里我们可以键入我们的需求。
Win = gs:create(window,GS,[{width,200},{height,100},{map,true}]).
gs:stop().
%%这里我们解雇了那个UI设计师。
%%基本上这个模式。
我的需求:
1、我要显示一个窗口
2、窗口中放上去一个按钮
3、我想在这个button上面加上标签。
GS = gs:start().
%%这里我们雇佣了那个UI设计师。
%%这里我们可以键入我们的需求。
Win = gs:create(window,GS,[{width,200},{height,100},{map,true}]).
Button=gs:create(button,Win).
gs:stop().
%%这里我们解雇了那个UI设计师。
%%基本上这个模式。
我的需求:
1、我要显示一个窗口
2、窗口中放上去一个按钮
3、我想在这个button上面加上标签。
GS = gs:start().
%%这里我们雇佣了那个UI设计师。
%%这里我们可以键入我们的需求。
Win = gs:create(window,GS,[{width,200},{height,100},{map,true}]).
Button=gs:create(button,Win).
gs:config(Button,[{label,{text,"click me!"}}]).
gs:stop().
%%这里我们解雇了那个UI设计师。
%%基本上这个模式。
如果你想知道我点了这个Button会有什么消息从GS那里发过来,
试下以下代码。
receive
Any->
Any
end.
然后点下那个butoon会得到类似 {gs,{5,<0.30.0>},click,[],[[]]} 返回,这就是button点击所产生的事件。