由于第二人生是多媒体的程序,因此它有音乐播放和语言聊天,那么就得使用到一种滑动条来调整音量的大小,如下图所示:
那么这个音量滑动条是怎么样实现的呢?下面就来详细地分析它的实现代码,先来看看它的类继承关系,如下:
class LLSlider : public LLUICtrl
LLSlider类只继承LLUICtrl类,那么说明它拥有控件类的功能,能在界面上面显示出来。它的详细显示代码如下:
#001void LLSlider::draw()
#002{
判断是否可见。
#003 if( getVisible() )
#004 {
//更新滑块的大小。
#005 // since thumb image might still be decoding, need thumb to accomodate image size
#006 updateThumbRect();
#007
#008 // Draw background and thumb.
#009
#010 // drawing solids requires texturing be disabled
#011 LLGLSNoTexture no_texture;
#012
#013 LLRect rect(mDragStartThumbRect);
#014
根据不同的比率来显示不同的颜色界面。
#015 F32 opacity = getEnabled() ? 1.f : 0.3f;
#016 LLColor4 center_color = (mThumbCenterColor % opacity);
#017 LLColor4 track_color = (mTrackColor % opacity);
#018
计算TRACK的大小。
#019 // Track
#020 LLRect track_rect(mThumbImage->getWidth() / 2,
#021 getLocalRect().getCenterY() + (mTrackImage->getHeight() / 2),
#022 getRect().getWidth() - mThumbImage->getWidth() / 2,
#023 getLocalRect().getCenterY() - (mTrackImage->getHeight() / 2) );
#024
显示滑动条的边框。
#025 gl_draw_scaled_image_with_border(track_rect.mLeft, track_rect.mBottom, 3, 3, track_rect.getWidth(), track_rect.getHeight(),
#026
#027mTrackImage, track_color);
#028 gl_draw_scaled_image_with_border(track_rect.mLeft, track_rect.mBottom, 3, 3, mThumbRect.mLeft, track_rect.getHeight(),
#029
#030mTrackHighlightImage, track_color);
#031
#032
显示滑块。
#033 // Thumb
#034 if( hasMouseCapture() )
#035 {
如果正在拖动滑块,就显示拖动前的位置。
#036 gl_draw_scaled_image(mDragStartThumbRect.mLeft, mDragStartThumbRect.mBottom, mDragStartThumbRect.getWidth(),
#037mDragStartThumbRect.getHeight(),
#038
#039 mThumbImage, mThumbCenterColor % 0.3f);
#040
如果有焦点,就显示动画。
#041 if (hasFocus())
#042 {
#043 F32 lerp_amt = gFocusMgr.getFocusFlashAmt();
#044 LLRect highlight_rect = mThumbRect;
#045 highlight_rect.stretch(llround(lerp(1.f, 3.f, lerp_amt)));
#046 gl_draw_scaled_image_with_border(highlight_rect.mLeft, highlight_rect.mBottom, 0, 0, highlight_rect.getWidth(),
#047highlight_rect.getHeight(),
#048
#049 mThumbImage, gFocusMgr.getFocusColor(), TRUE);
#050 }
#051
在新位置显示滑块。
#052 gl_draw_scaled_image(mThumbRect.mLeft, mThumbRect.mBottom, mThumbRect.getWidth(), mThumbRect.getHeight(),
#053
#054 mThumbImage, mThumbOutlineColor);
#055
#056 }
#057 else
#058 {
没有拖动的显示。
#059 if (hasFocus())
#060 {
#061 F32 lerp_amt = gFocusMgr.getFocusFlashAmt();
#062 LLRect highlight_rect = mThumbRect;
#063 highlight_rect.stretch(llround(lerp(1.f, 3.f, lerp_amt)));
#064 gl_draw_scaled_image_with_border(highlight_rect.mLeft, highlight_rect.mBottom, 0, 0, highlight_rect.getWidth(),
#065highlight_rect.getHeight(),
#066
#067 mThumbImage, gFocusMgr.getFocusColor(), TRUE);
#068 }
#069
#070 gl_draw_scaled_image(mThumbRect.mLeft, mThumbRect.mBottom, mThumbRect.getWidth(), mThumbRect.getHeight(),
#071
#072 mThumbImage, center_color);
#073 }
#074 LLUICtrl::draw();
#075 }
#076}
上面的函数,主要显示一条滑动条,然后根据是否拖动和是否有焦点输入而显示不同的颜色滑块。
分享到:
相关推荐
实现了点击图标中间的按钮后拖动就可以调节音量的效果,只要按住鼠标即可旋转按钮来调节音量。本段代码是英语所有网页使用,有兴趣的朋友们可以前来下载使用。
Andorid项目源码 仿ios音量调节的效果 案例实现Andorid项目源码 仿ios音量调节的效果 案例实现Andorid项目源码 仿ios音量调节的效果 案例实现Andorid项目源码 仿ios音量调节的效果 案例实现Andorid项目源码 仿ios...
易语言 音量调整源码 易语言 音量调整源码易语言 音量调整源码 易语言 音量调整源码
C++实现音量调节和获取的方法,主要有两种情况,一种是直接调节系统的音量,一种是调节当前播放的PCM数据的音量,如果不考虑当前应用程序调节音量对系统中其他音量控制的影响,可以直接使用系统音量调节功能;...
Swipper - Android库可滑动手势来控制音量,亮度和搜索
前几天看到一个反人类音量滑动条设计的有趣帖子原帖地址,网友设计了各种反人类的滑动条(这些脑洞我是服气的!),于是我抽空在 android 上面实现了一个其中比较有趣的设计,点击喇叭弹射出去圆点控制音量。在写这个...
NULL 博文链接:https://mgm.iteye.com/blog/663083
音量.e源码
主要介绍了Android实现音量调节的方法,涉及Android页面布局及多媒体播放的设置技巧,具有一定参考借鉴价值,需要的朋友可以参考下
当用户需要调节音量的时候,只要按下全局系统热键就可以打开调节窗口,并自动将输入焦点设置到调节窗口上来,此时,用户只需要滚动鼠标滚轮就可以实现音量的随意调节了.而且,用户不需要手动去关闭调节窗口,当窗口失去...
VC 6.0利用滑块进行音量控制的示例源码,实现的过程:初始化混合器设备,获得音量控制控件的ID和名称,初始化滚动条,获得当前音量值,并设置滚动条的初始位置,根据滑块滚动条的位置设置音量,响应控件音量改变的...
窗体类似音量大小滚动条的实现, 其中最主要的是窗体间数据的传递
C++Builder实现音量控制 多媒体播放器
最基本的一个自定义音量条,其中外层图层固话了个数,可以通过修改canvas布局进行修改,然后完善
android 自定义音量键seekBar 可监听系统电话状态,实现媒体音量和通话音量自动切换调整声音大小。
自己实现的MFC自绘按钮、自绘下拉菜单和自绘滑动条的源代码,直接可以编译运行,直接可以拿到自己的项目中使用。点击右键出现下拉菜单,点击音量按钮出现滑动条。每一个按钮都实现了高亮效果和按下的效果。
delphi10.1控制系统音量的源码,给初学者的,希望有所帮助
HTML5+CSS3实现的音量调节旋转按钮动态特效源码.zip
易语言源码音量控制.rar 易语言源码音量控制.rar 易语言源码音量控制.rar 易语言源码音量控制.rar 易语言源码音量控制.rar 易语言源码音量控制.rar