|
图中所示的效果有2个关键技术。当然这个技术不难。看GTK的代码很容易看到,这里我既然做EGui的时候学习。我就想告诉大家。或许我们日常我们也看了但是没有仔细想而已。那么到底他们是怎么做出来的呢?
1. button
大家都知道一般按钮在显示的时候有一种凸出效果。
2. edit
一般的都是凹陷进去的。
那么他们是怎么实现的呢?实际上gtk里有个shadow.函数实现了他。以上2个控件是一种技术。正反2种用法而已。
看代码。
[code:1]
int
Egui_shadow_out (int x,int y, int w,int h,EGui_Window * window)
{
int i = 0;
Ecolor color;
new_color( window,&color,0xA0A0A0);
Egui_rect (x+i,y+i,w-i-2,h-i-2, &color, window);
i++;
new_color( window,&color,0xF0F0F0);
/* left vertical */
Egui_line (x+i,y+i,x+i,h-i-2, &color, window);
/* up horizontal */
Egui_line (x+i,y+i,w-i-2,y+i, &color, window);
new_color( window,&color,0x808080);
/* right vertical */
Egui_line (w-i,y+i-1,w-i,h-i, &color, window);
/* bottom horizontal */
Egui_line (x+i-1,h-i,w-i,h-i, &color, window);
}
int
Egui_shadow_in (int x,int y,int w,int h,EGui_Window * window)
{
int i = 0;
Ecolor color;
new_color( window,&color,0xA0A0A0);
Egui_rect (x+i,y+i,w-i-2,h-i-2, &color, window);
i++;
new_color( window,&color,0x808080);
/* left vertical */
Egui_line (x+i,y+i,x+i,h-i-2, &color, window);
/* up horizontal */
Egui_line (x+i,y+i,w-i-2,y+i, &color, window);
new_color( window,&color,0xF0F0F0);
/* right vertical */
Egui_line (w-i,y+i-1,w-i,h-i, &color, window);
/* bottom horizontal */
Egui_line (x+i-1,h-i,w-i,h-i, &color, window);
i++;
new_color(window,&color,0xEDEDED);
Egui_fill (x+i,y+i,w-i-1,h-i-1, &color, window);
}[/code:1]
代码都差不多,就是颜色换一种玩法而已。
首先画个矩形。在矩形的左上角的内侧画2条相对的白线,右下角化2条相对的黑线。这就是凸出效果。
反之就是凹陷效果。
怎么样?你也可你试一下。
3. disable click
这是第2种关键技术。大家都知道,为了告诉用户这个按钮不能单击,系统用了灰色效果。
字有些凹陷的样子。这是怎么做出来的呢?
看看代码:
[code:1] new_color(window,&color,0xFFFFFF);
Egui_drawstring(x + 6,y + 3,widget->name,font,&color,window);
new_color(window,&color,0x747474);
Egui_drawstring(x + 5,y + 2,widget->name,font,&color,window);[/code:1] 先用白色将字画一遍。再用常用的暗灰色画一遍。
注意:白色的字的位置是暗灰色的字右下的row,col都移一个像素。
先画白色的字体。
欢迎沟通图形问题。
asmcos 2006-04-12 www.egui.org[code:1][/code:1] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|