OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 活动中心 » 合作大赛 » 急问 ,为什么利用透明的层绘制的对话框时而又显示,时而没有显示

共6条 1/1 1 跳转至

急问 ,为什么利用透明的层绘制的对话框时而又显示,时而没有显示

菜鸟
2010-11-29 14:50:39    评分
这段程序的代码如下:
VMINT8 * buf;
 VMWCHAR str[20];
 layer_hdl[1] = vm_graphic_create_layer( 40, 140, 160, 80, VM_COLOR_888_TO_565(200,200,200) );
 //vm_graphic_set_clip();
 buf = vm_graphic_get_layer_buffer ( layer_hdl[1] );
 //vm_graphic_fill_roundrect ( buf, 0, 0, 160, 80, 5, VM_COLOR_888_TO_565(200,200,200) );
 vm_graphic_fill_rect ( buf, 0, 0, 160, 80, VM_COLOR_WHITE, VM_COLOR_888_TO_565(200,200,200) );
 //vm_graphic_textout (buf, (ScreenWidth-vm_graphic_get_string_width(str))/2,
 // (ScreenHeight-vm_graphic_get_character_height())/2, str, wstrlen(str), VM_COLOR_RED );
 //draw Yes corn画Yes按钮
 vm_graphic_fill_roundrect ( buf, 50-40, 190-140, 50, 20, 2, VM_COLOR_888_TO_565(150,150,150) );
 vm_graphic_line ( buf, (50+2   -40), (190+20+1-140), (50+50-1-40), (190+20+1-140), VM_COLOR_BLACK );    //因为新建layer 1,减去最初设在基层上的偏移量
 vm_graphic_line ( buf, (50+2   -40), (190+20+0-140), (50+50-1-40), (190+20+0-140), VM_COLOR_BLACK );
 vm_graphic_line ( buf, (50+50+1-40), (190+2   -140), (50+50+1-40), (190+20-2-140), VM_COLOR_BLACK );
 vm_graphic_line ( buf, (50+50+0-40), (190+2   -140), (50+50+0-40), (190+20-2-140), VM_COLOR_BLACK );
 
 vm_ascii_to_ucs2(str,20,"是(Y)");
 vm_graphic_textout(buf, 50+(50-vm_graphic_get_string_width(str))/2-40, 190+3-140, str, wstrlen(str), VM_COLOR_888_TO_565(255, 155,0) );
 
 //draw Yes corn画Yes按钮
 vm_graphic_fill_roundrect ( buf, ScreenWidth-50-50, 190, 50, 20, 2, VM_COLOR_888_TO_565(150,150,150) );
 vm_graphic_line ( buf, (ScreenWidth-(50+1)-40), (190+20+1-140), (ScreenWidth-(50+50-2)-40), (190+20+1-140), VM_COLOR_BLACK );
 vm_graphic_line ( buf, (ScreenWidth-(50+1)-40), (190+20+0-140), (ScreenWidth-(50+50-2)-40), (190+20+0-140), VM_COLOR_BLACK );
 vm_graphic_line ( buf, (ScreenWidth-(50+1)-40), (190+2   -140), (ScreenWidth-(50+1)   -40), (190+20-2-140), VM_COLOR_BLACK );
 vm_graphic_line ( buf, (ScreenWidth-(50+0)-40), (190+2   -140), (ScreenWidth-(50+0)   -40), (190+20-2-140), VM_COLOR_BLACK );
 
 vm_ascii_to_ucs2(str,20,"否(N)");
 vm_graphic_textout(buf, ScreenWidth-50-50+(50-vm_graphic_get_string_width(str))/2-40, 190+3-140, str, wstrlen(str), VM_COLOR_888_TO_565(255, 155,0) );
 
 vm_ascii_to_ucs2(str,20,"确定退出?");
 vm_graphic_textout( buf, 20, ( 80-vm_graphic_get_character_height() )/2, str, wstrlen(str), VM_COLOR_888_TO_565(255, 155,0) );
 
 vm_graphic_set_layer_opacity(layer_hdl[1],50); //set opacity of fast layer 
 
 //draw_text("确定退出?", (ScreenHeight-vm_graphic_get_character_height())/2, 0 );
 vm_graphic_flush_layer( layer_hdl, 2 );



关键词: 急问     为什么     利用     透明     绘制     对话框     而又     显示    

助工
2010-11-29 17:52:40    评分
2楼

你好,请问有显示的时候你做了什么?没有显示的时候你又做了什么?
建议你从程序逻辑的角度去查这个问题。


菜鸟
2010-11-29 22:17:39    评分
3楼
就没有什么逻辑啊,现都没有的显示了,只有一个透明的框,里面的按钮和汉字就没有显示,

助工
2010-11-30 10:19:17    评分
4楼
"为什么利用透明的层绘制的对话框时而又显示,时而没有显示"

你好,你之前说 时而有显示,时而没有显示。

现在为什么又都没有显示了?

菜鸟
2010-11-30 12:17:38    评分
5楼

我也搞不懂,以前是我没有使用透明的层,后来只是把层修改成透明的,然后也设置了相应的透明度,现在是能显示一个我绘制的按钮和部分文字,真是搞不懂,最近我就没有在修改这部分代码了,而是在写其他地方的程序,还是怪异啊!!!
以上这段代码就是我用于绘制这个退出游戏时 询问确认退出的对话框 的子函数,就是不对,也不知道怎么回事


助工
2010-12-03 13:13:06    评分
6楼

你好,你总共创建了几个层?
如果你只是要绘制一个退出游戏的对话框,可以都绘制在fast layer上。


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]