基于透明窗体的按钮跟随鼠标波浪式浮动的实现方法技术

技术编号:8682343 阅读:187 留言:0更新日期:2013-05-09 02:28
本发明专利技术提供一种基于透明窗体的按钮跟随鼠标波浪式浮动的实现方法,包括:步骤10、通过创建内存模型,构建透明窗体;步骤20、通过Draw方法画图,生成按钮位图,将该按钮位图刷新到窗体,该按钮位图显示在窗体中;步骤30、当鼠标移至按钮位图上,计算并获得各按钮渐变轨迹,并将当前状态下各按钮画至缓冲位图;步骤40、将缓冲位图刷新至窗体,窗体中显示当前状态下渐变后的按钮,实现透明窗体中按钮跟随鼠标波浪式浮动。本发明专利技术通过重新创建内存模型,构建透明窗体,且窗体边缘无毛刺,工具条上各按钮可以是任意形状,然后通过缩放系数m=kxi+b,获得参与渐变的按钮在渐变后的尺寸大小,实现按钮渐变,且降低了CPU的占用率。

【技术实现步骤摘要】

本专利技术涉及应用软件的窗体,特别涉及。
技术介绍
随着计算机的迅速发展,相关的绘图软件也应运而生。为方便用户操作,大多数绘图软件都会向用户提供工具条,工具条上设有多个用于修改功能参数的按钮。这些工具条可在画布上随意拖动,但由于老式工具条都是不透明的,在操作过程中,且会遮挡用户查看工具条后方画布上的内容,用户只能通过频繁拖动工具条,才能看清画布,因此使用过程很不方便。现在市场上还出现了一些可以使软件的窗体以任意形状显示的技术,但是这些窗体都存在着窗体边缘毛刺,窗体中工具条上的各按钮无法以任意形状显示的问题,且存在CPU占用率高等缺点。所述软件的窗体是指任意一种软件打开使用后,除可编辑的界面或画布以及工具条之外的框体,例如:画图软件打开后,包括:中间部分的画布、工具条以及环绕四周的框体。
技术实现思路
本专利技术要解决的技术问题,在于提供一种,其实现保留软件编辑区可见但窗体透明的友好界面,且使窗体内各工具条上的按钮跟随鼠标波浪式浮动,窗体边缘无毛刺,工具条上的按钮可以是任意形状,CPU占用率低。本专利技术是这样实现的:,包括如下步骤:步骤10、通过创建内存模型,构建透明窗体;步骤20、通过Draw方法画图,生成按钮位图,将该按钮位图刷新到窗体,该按钮位图显示在窗体中;该按钮位图上画有复数个按钮,各按钮大小为初始化状态下大小,即各按钮大小未发生改变;用户根据需要自定义各按钮的大小形状;通过Draw方法绘制的按钮位图显示到窗体中,不会被透明,且不会出现毛刺现象;步骤30、当鼠标移至按钮位图上,计算并获得各按钮渐变轨迹,并将当前状态下各按钮画至缓冲位图;所述当前状态是指鼠标移至按钮位图上的状态;步骤40、将缓冲位图刷新至窗体,窗体中显示当前状态下渐变后的按钮,实现透明窗体中按钮跟随鼠标波浪式浮动。进一步地,所述步骤10具体为:步骤11、设置窗体风格:重载CreateParams方法,设置窗口风格为无标题、置顶、带边框的弹出窗口; 步骤12、设置内存模型:首先,创建第一设备上下文,该第一设备上下文与显示器关联,存储显示器的基本信息,所述基本信息包括:显示器的宽、高、分辨率;当Windows系统得到第一设备上下文时,将根据第一设备上下文存储的显示器基本信息刷新屏幕;其次,创建由窗体画布定义的第二设备上下文,该第二设备上下文保存绘制的工具条。然后,设置内存参数:创建一 BLENDFUNCTION类型变量,所述BLENDFUNCTION类型为结构体,该结构体包含有混合处理指令BlendOp、混合标志BlendFlags、混合方式AlphaFormat、源位图透明度SourceConstantAlpha四个子参数,该四个自参数的值分别设置为AC_SRC_0VER,0,I和255 ;通过所述结构体将第一设备上下文和第二设备上下文按照所述子参数进行色彩混合处理,从而得到具有透明效果的图片;步骤13、使用Windows API的函数UpdateLayeredWindow将所述图片刷新至屏幕,从而构建出透明窗体。进一步地,所述步骤30具体为:步骤31、创建一张与所述按钮位图大小一样的缓冲位图,并设置每次参与渐变的按钮的个数η,η < N,N为总的按钮数量;步骤32、设按钮初始化状态下的尺寸值w。,相邻两按钮间的间距Wd,鼠标与任意一按钮中心之间的距离为Xi, I彡i彡N ;设按钮的缩放系数为Hii,且按钮缩放系数与鼠标与按钮中心之间的距离为Xi成正t匕,即mekXi+b,贝U缩放后的按钮尺寸Yi=HiiWtj= (kx^b) W0,η为偶数时:当鼠标与第i个按钮中心的距离Xi= ( 。+%)/2,则所述第i个按钮尺寸达到最大尺寸值ymax,定义ymax=2w。;当鼠标与第i个按钮中心的距离Xi=Di wjOi+DwJ/^,则所述第i个按钮尺寸达到最小尺寸值ymin,定义ymin = w0 ;通过计算得到缩放系数mi=kXi+b中斜率k和常量b,从而获得η为偶数时,参与渐变的各按钮在渐变后的尺寸;当鼠标与其中任意一按钮中心的距离Xi > [n w0+(n+l)wd]/2时,该按钮不参与渐变;将不参与渐变的按钮从按钮位图上直接复制到缓冲位图上相对应的位置,对于参与渐变的按钮,将其缩放后的按钮画至缓冲位图上相对应的位置,完成缓冲位图的绘制;η为奇数时:当鼠标与第i个按钮中心的距离Xi为0,则所述第i个按钮尺寸达到最大尺寸值ymax,定乂 Ymax 2W。;当鼠标与第i个按钮中心的距离Xi=[n W()+(n+l)Wd]/2,则所述第i个按钮尺寸达到最小尺寸值ymin,定义ymin = w0 ;通过计算得到缩放系数mi=kXi+b中斜率k和常量b,从而获得η为奇数时,参与渐变的各按钮在渐变后的尺寸; 当鼠标与其中任意一按钮中心的距离Xi > [n w0+(n+l)wd]/2时,该按钮不参与渐变;将不参与渐变的按钮从按钮位图上直接复制到缓冲位图上相对应的位置,对于参与渐变的按钮,将其缩放后的按钮画至缓冲位图上相对应的位置,完成缓冲位图的绘制。本专利技术具有如下优点:通过重新创建内存模型,构建透明窗体,且窗体边缘无毛刺,工具条上各按钮可以是任意形状,然后通过缩放系数m=kXi+b,获得参与渐变的按钮在渐变后的尺寸大小,将渐变后的按钮画至缓冲位图,将未参与渐变的按钮直接从按钮位图中复制过来,然后将绘制好的缓冲位图直接刷新至窗体,实现按钮跟随鼠标波浪式浮动,同时降低了 CPU的占用率。具体实施方式,包括如下步骤:步骤10、通过创建内存模型,构建透明窗体;具体为:步骤11、设置窗体风格:重载CreateParams方法,设置窗口风格为无标题、置顶、带边框的弹出窗口;步骤12、设置内存模型:首先,创建第一设备上下文,该第一设备上下文与显示器关联,存储显示器的基本信息,所述基本信息包括:显示器的宽、高、分辨率;当Windows系统得到第一设备上下文时,将根据第一设备上下文存储的显示器基本信息刷新屏幕;其次,创建由窗体画布定义的第二设备上下文,该第二设备上下文保存绘制的工具条;这里解释一下设备上下文:所述设备上下文是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的Windows数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条、形状和文本的Windows API。设备上下文允许在Windows中进行与设备无关的绘制。设备上下文可用于绘制到屏幕、打印机或者图元文件。然后,设置内存参数:创建一 BLENDFUNCTION类型变量,所述BLENDFUNCTION类型为结构体,该结构体包含有混合处理指令BlendOp、混合标志BlendFlags、混合方式AlphaFormat、源位图透明度SourceConstantAlpha四个子参数,该四个自参数的值分别设置为AC_SRC_0VER,0,I和255 ;通过所述结构体将第一设备上下文和第二设备上下文按照所述子参数进行色彩混合处理,从而得到具有透明效果的图片;这里说明一下BLENDFUNCTION类型的结构体原理:通过设定控制色彩混合处理的指令为AC_SRC_0VER,使源位图可以根据自身各像素透明值置于目标位图(两张图叠加)。当设定控制源位图和目标位图混合方式本文档来自技高网...

【技术保护点】
基于透明窗体的按钮跟随鼠标波浪式浮动的实现方法,其特征在于:包括如下步骤:步骤10、通过创建内存模型,构建透明窗体;步骤20、通过Draw方法画图,生成按钮位图,将该按钮位图刷新到窗体,该按钮位图显示在窗体中;该按钮位图上画有复数个按钮,各按钮大小为初始化状态下大小,即各按钮大小未发生改变;用户根据需要自定义各按钮的大小形状;步骤30、当鼠标移至按钮位图上,计算并获得各按钮渐变轨迹,并将当前状态下各按钮画至缓冲位图;所述当前状态是指鼠标移至按钮位图上的状态;步骤40、将缓冲位图刷新至窗体,窗体中显示当前状态下渐变后的按钮,实现透明窗体中按钮跟随鼠标波浪式浮动。

【技术特征摘要】
1.关于透明窗体的按钮跟随鼠标波浪式浮动的实现方法,其特征在于:包括如下步骤: 步骤10、通过创建内存模型,构建透明窗体; 步骤20、通过Draw方法画图,生成按钮位图,将该按钮位图刷新到窗体,该按钮位图显示在窗体中;该按钮位图上画有复数个按钮,各按钮大小为初始化状态下大小,即各按钮大小未发生改变;用户根据需要自定义各按钮的大小形状; 步骤30、当鼠标移至按钮位图上,计算并获得各按钮渐变轨迹,并将当前状态下各按钮画至缓冲位图;所述当前状态是指鼠标移至按钮位图上的状态; 步骤40、将缓冲位图刷新至窗体,窗体中显示当前状态下渐变后的按钮,实现透明窗体中按钮跟随鼠标波浪式浮动。2.根据权利要求1所述的基于透明窗体的按钮跟随鼠标波浪式浮动的实现方法,其特征在于:所述步骤10具体为: 步骤U、设置窗体风格:重载CreateParams方法,设置窗口风格为无标题、置顶、带边框的弹出窗口; 步骤12、设置内存模型: 首先,创建第一设备上下文,该第一设备上下文与显示器关联,存储显示器的基本信息,所述基本信息包括:显示器的宽、高、分辨率;当Windows系统得到第一设备上下文时,将根据第一设备上下文存储的显示器基本信息刷新屏幕; 其次,创建由窗体画布定 义的第二设备上下文,该第二设备上下文保存绘制的工具条。然后,设置内存参数: 创建一 BLENDFUNCTION类型变量,所述BLENDFUNCTION类型为结构体,该结构体包含有混合处理指令BlendOp、混合标志BlendFlags、混合方式AlphaFormat、源位图透明度SourceConstantAlpha四个子参数,该四个自参数的值分别设置为AC_SRC_0VER,0,I和255 ;通过所述结构体将第一设备上下文和第二设备上下文按照所述子参数进行色彩混合处理,从而得到具有透明效果的图片; 步骤13、使用Windows API的函数UpdateLayeredWindow将所述图片刷新至屏幕,从而构建出透明窗体。3.根据权利要求1所述的基于透明...

【专利技术属性】
技术研发人员:丁万年贺小阳陈日良
申请(专利权)人:锐达互动科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1