当前位置:C++技术网 > 精选软件 > MFCDui框架升级点:悬浮提示、3D立体阴影效果、渐变效果、自适应走势图

MFCDui框架升级点:悬浮提示、3D立体阴影效果、渐变效果、自适应走势图

更新时间:2016-10-27 19:57:24浏览次数:1+次

    最近回到了后台监控软件的升级开发。虽然才升级不就,先将目前升级的效果分享出来一下。技术没有什么高深的,但是喜悦还是无限的。程序员最大的悲哀就是,辛辛苦苦整出来的东西,别人冷眼相对,一句“没有什么技术含量”而让自己心灰意冷。没事,最重要的是自己高兴。自己做的东西,如果有人欣赏,自然高兴,没有人欣赏,那是很正常的事情。或许在别人眼里看来是何等简单,但是对于自己来说,却经历过很多努力而实现,那也是值得庆祝的。当然,别人只是简单看到外表的简单,却不知道内在有很多细节需要处理。

    下面是目前运用在项目中的效果图:

MFCDui框架升级点滴总结:悬浮提示、菜单支持、3D立体阴影效果、渐变效果

【升序排列】

   上图列出了三个列表项的样子。这里面用到的效果有列表项的3D立体阴影效果、标题的渐变效果。其中选中和悬浮分别设置了单独的效果,选中使用了外缩的立体效果,悬浮的使用的是外扩的立体效果。

    外缩效果意思是最外一层的颜色深度是深,里面的颜色浅,立体效果由浅色到深色渐变,就形成了外缩的3D立体阴影效果。而外扩效果意思是最外一层颜色和背景色一样白,从里层到外出,颜色逐渐变浅,直到颜色与背景一致,就形成了外扩的3D立体阴影效果。外扩的效果是我们经常看到的。

    鼠标悬浮的时候,通常的效果就是阴影效果范围更大,让悬停很夸张的显示出来。我们这里就是这么做的,实现方法就是扩大范围,渐变还是一样的。

    而标题采用了横向渐变效果。这个标题的效果和Win2000的标题效果有点像,颜色可以随意调节,只是刚好撞色了。

    那么这些效果的基本技术就是渐变颜色的绘制。所以标题是最直接的一个应用,3D立体阴影也是用渐变色实现的。这里只是分享一下MFCDUI的升级情况,不会讲述具体实现细节和代码,将在后续文章中讲述。

    要说明的是,这里的实现效果如果对于GDI+来说,应该很简单。对于C#、WPF来说这类的环境来说,也都是基于GDI+实现的,确实很容易。然而,我这里只是用了GDI实现。所以每一个效果都是手动实现的。重点是,在实现的过程中,可以学到这些特效实现的原理。这样,你会发现,那些绚丽的效果,都是可以自己轻松实现的,你也就可以实现更加酷炫的效果,而不仅仅限于各种工具给你提供好的效果。

    当然,现在加入了菜单支持。之前加入了更多消息类型的支持,不再只是左键单击的消息了。有了鼠标悬停消息、鼠标右键消息等,就可以实现悬停效果和右键菜单了。之前只是在C++技术网的作者空间的技术说说里提到,没有专门写文章总结。回头有空了会对这些技术实现进行探讨。

    下面是菜单支持的效果:

MFCDui框架升级点滴总结:悬浮提示、菜单支持、3D立体阴影效果、渐变效果

【降序排列】

   列表中加入了右键快捷菜单,支持升序排列和降序排列。通过右键快捷菜单点击降序排列的菜单项后,就是上图看到的效果了。

    当然,昨天还对走势图组件进行了全面升级,这里也一并分享出来。

    下面是走势图的效果:

柱状图

【柱状图】

折线图

【折线图】

柱状图和折线图混合

【柱状图和折线图混合】

   新升级的走势图组件将XY两个坐标刻度值显示在画图区的外部,如下图:

新升级的走势图组件将XY两个坐标刻度值显示在画图区的外部

【xy坐标刻度值在画图区外,且位置固定】

   走势图组件可以显示柱状图、折线图和混合图,而且是可以随着窗口大小变化而自动变化的。柱状图的柱子宽度也是自动变化的。背景的格子也是有玄妙之处。虚线格子是始终与刻度值对应的,白线是不对应刻度值的。主要是X坐标如果值太多,就会很密集,导致时间显示重叠。这个很好的解决掉了。会自动计算距离,然后始终保持显示的X刻度值不会重叠。X的刻度态度,也会间隔一定的距离标刻度,和显示刻度值。如果柱状图在坐左边,则会自动切减掉左半边。

    这是走势图上的右键菜单:

走势图上的右键菜单

走势图上的右键菜单

   好了,暂时就告一段落吧。升级在不断继续,后续要增加更多的支持,以满足业务的需要。这是我自己研发的MFC DUI框架哦。因为现在框架不成熟,也只能是我自己先用用。已经发布的一个版本,请访问:MFCDUI开源框架

    一些基本的实现有空我都会分享出来的。敬请期待。