不规则皮肤生成的方法及系统的制作方法

文档序号:6597708阅读:138来源:国知局
专利名称:不规则皮肤生成的方法及系统的制作方法
不规则皮肤生成的方法及系统
技术领域
本发明涉及动态图像处理领域,特别涉及一种不规则皮肤生成的方法及系统。背景技术
目前,对于不规则皮肤的生成,一般是在程序中对特定的点阵图(Bitmap,BMP) 图片进行像素遍历,将颜色值不为掩码色的像素组合成区域(Region),通过调用窗口 (Windows)的应用程序接口(Application Programming hterface,简称"API,,)函数 ktWindowRgn将该区域设置为特定窗体的区域来达到窗体的不规则外形。目前主要采用两种方式实现(1)在程序中硬编码将特定图片和特定窗体映射起 来,特定图片生成的区域会被设置给和它有映射关系的对应窗体。(2)在诸如扩展标记语言 (extensible Markup Language,简称“XML”)或者初始化设置(initial,简称“INI”)等类 型的配置文件中指定图片和窗体的映射关系,指定图片生成的区域被设置给和它有映射关 系的对应窗体。对于第一种实现方案,由于是在程序中对特定的BMP图片进行遍历,因此当需要 做另外一套异形皮肤的时候,需要改动代码,以应付皮肤中改变的、增加的BMP图片,可配
置性差。对于第二种实现方案,由于窗口的区域是通过BMP来生成的,并且BMP的大小是固 定的,因此无法实现窗口拉伸(即窗口大小改变)时的不规则外形效果,无法实现拉伸时的 不规则外观。

发明内容基于此,有必要提供一种不规则皮肤生成的方法,能快速地动态配置不规则皮肤, 且能实现窗体拉伸时的不规则外观效果。此外,还有必要提供一种的不规则皮肤生成的系统,能快速地动态配置不规则皮 肤,且能实现窗体拉伸时的不规则外观效果。一种不规则皮肤生成的方法,包括以下步骤获取区域描述配置文件,建立区域与窗体之间的映射关系;根据区域描述配置文件生成区域;根据生成的区域及区域与窗体之间的映射关系生成不规则皮肤。优选地,所述区域描述配置文件描述的内容包括区域标识码、区域类型、区域图 片路径、区域的宽度、区域的高度、区域的合并方式和区域的排列方式。优选地,所述区域与窗体之间的映射关系通过配置文件建立。优选地,所述生成的区域包括单一区域和/或合成区域,所述生成区域的步骤具 体为A.设定要生成区域的大小;B.判断该区域是否为单一区域,如果是,则执行C,如果否,则执行D ;
C.根据区域描述配置文件生成单一区域;D.根据区域描述配置文件生成合成区域;E.返回生成的区域。优选地,所述步骤C中生成单一区域的步骤具体为Cl.判断该区域是否由带掩码色的图片生成,若是,执行步骤C2,否则执行步骤 C6 ;C2.加载该区域对应的带掩码色的图片;C3.判断是否遍历完图片的最后一行,若是,执行步骤C4,否则,执行步骤C5。C4.合并每一行得到的区域为要生成的区域。C5.遍历图片一行的像素,以每相邻两个掩码色像素之间不包含掩码色像素的区 域大小,创建矩形区域,若一行能创建多个矩形区域,则遍历完一行后,将创建的多个矩形 区域合并成一个区域,然后转入下一行,返回步骤C3 ;C6.以设定要生成的区域的大小作为参数创建矩形区域。优选地,所述步骤D中的所述合成区域包括多个子区域,所述子区域为单一子区 域和/或合成子区域,所述生成合成区域的步骤具体为Dl.判断所有子区域是否遍历完,若是,则执行D4,否则执行步骤D2 ;D2.根据遍历的当前子区域在该子区域所在的父区域中的属性值确定该子区域的 大小;D3.根据遍历的当前子区域的大小递归调用步骤A D生成当前子区域,然后转入 下一个子区域,并跳转到步骤Dl ;D4.根据各子区域组合方式合并各子区域为要生成的区域。优选地,所述方法还包括获取窗体拉伸后的大小;根据区域描述配置文件,获取所述窗体拉伸前所对应的区域;根据所获取的窗体拉伸后的大小及所述窗体拉伸前对应的区域,生成与拉伸后的 窗体相对应的新区域;将生成的新区域配置给拉伸后的窗体。—种不规则皮肤生成的系统,该系统包括区域生成器,获取区域描述配置文件,根据区域描述配置文件生成区域;皮肤生成模块,获取区域与窗体之间的映射关系,根据所述生成的区域及区域与 窗体之间的映射关系生成不规则皮肤。优选地,所述区域描述配置文件描述的内容包括区域标识码、区域类型、区域图 片路径、区域的宽度、区域的高度、区域的合并方式和区域的排列方式。优选地,所述区域与窗体之间的映射关系通过配置文件建立。优选地,所述区域生成器包括单一区域生成模块、合成区域生成模块及判断模块; 所述判断模块用于判断设定要生成的区域的类型;所述单一区域生成模块在判断模块判断 要生成的区域为单一区域时则生成单一区域,所述合成区域生成模块在判断模块判断要生 成的区域为合成区域时则生成合成区域。优选地,所述单一区域生成模块进一步用于在判断到该要生成的区域为带掩码色的图片生成时加载该区域对应的带掩码色的图片;遍历图片一行的像素,以每相邻两个掩 码色像素之间不包含掩码色像素的区域大小,创建矩形区域,若一行能创建多个矩形区域, 则遍历完一行后,将这些区域合并成一个区域,然后转入下一行遍历,直至遍历完所有的图 片;合并每一行得到的区域为要生成的区域;输出生成的单一区域。优选地,所述单一区域生成模块进一步用于在判断到该设定要生成的区域为创建 矩形区域生成的区域时以设定要生成的区域大小作为参数创建矩形区域;输出生成的单一 区域。优选地,所述合成区域包括多个子区域,所述子区域为单一区域和/或合成区域, 所述合成区域生成模块进一步用于遍历子区域;获取所述子区域在所在的父区域中的属性 值,确定该子区域的大小并生成当前子区域,然后转入下一个子区域,直至遍历完所有子区 域;获取各子区域组合方式合并各子区域为要生成的区域;输出生成的合成区域。优选地,所述皮肤生成模块进一步获取窗体拉伸后的大小并将所述窗体拉伸后的 大小传递给所述区域生成器;所述区域生成器进一步根据区域描述配置文件获取窗体拉 伸前对应的区域,并根据获取的窗体拉伸后的大小生成与所述拉伸后的窗体相对应的新区 域,并将所述新区域配置给拉伸后的窗体。上述不规则皮肤生成的方法及系统,采用配置文件描述区域,根据配置文件中的 区域描述生成区域,并根据生成的区域及区域与窗体之间的映射关系,生成不规则皮肤,达 到了不用修改代码只需配置文件就可以快速动态配置不同的不规则皮肤,且能根据窗体变 化重新生成新的对应区域,实现了拉伸时的不规则外观效果。另外,上述不规则皮肤生成的方法及系统能产生多样化的外观,能很好的支持版 本界面变化大的桌面客户端软件。

图1为一个实施例中不规则皮肤生成的方法流程图;图2A为一个实施例中合成区域示意图;图2B为一个实施例中合成区域拉伸变化后的示意图;图3为一个实施例中生成区域的方法流程图;图4为一个实施例中生成单一区域的方法流程图;图5为一个实施例中生成合成区域的方法流程图;图6为一个实施例中不规则皮肤拉伸变化实现方法的流程图;图7为一个实施例中不规则皮肤生成的系统的结构示意图。
具体实施方式图1为一个实施例中一种不规则皮肤生成的方法,包括以下步骤步骤Si,获取区域描述配置文件,建立区域与窗体之间的映射关系。其中,区域描绘了一个显示区域,可以是任何形状,且区域边界可以是曲线和直线 的结合、也可以是点和/或断线组成。区域可以由矩形、路径或矩形与路径的结合创建形 成,能够被裁剪和点击测试操作。区域包括单一区域和合成区域。单一区域为遍历一张带 掩码色的位图像素生成的区域,或者是调用窗口(Windows)应用程序接口(API)创建不规则区域的函数工具(CreateRectRgn)生成的区域,或者是调用创建多边形区域的函数工具 (CreatePolygonRegion)生成的区域,单一区域不可再分,具有原子性。合成区域包括多个 子区域,该子区域可以为单一子区域和/或合成子区域。多个子区域合成的方式可以为区 域的交集、并集或差集等。区域描述配置文件内存有采用配置文件对区域的描述代码,可以在不修改代码的 情况下快速修改区域,达到快速切换到另一个主题的不规则皮肤的目的。区域描述配置 文件描述区域的内容包括区域标识码、区域类型、区域图片路径、区域的宽度、区域的高 度、区域的合并方式和区域的排列方式。一实施例中,区域描述配置文件为扩展标记语言 (extensible Markup Language,简称“XML,,)配置文件、初始化(Initialization file,简 称“INI”)配置文件或其他类型的配置文件。在一个实施例中,采用XML描述区域的格式如 下〈Region 0ID=〃 ID名称〃 Type="区域类型〃 Image="生成区域的带掩 码色图片的路径〃 Width = "区域的宽度〃 Height="区域的高度〃 Mode="合并方 式"Align="区域的排列方式">〈/Region〉其中,Region OID是区域的标识码,全局唯一 ;Width为区域的宽度,Height为区 域的高度;Type为区域类型,包括单一区域和合成区域两种类型,两种类型具体内容如下(1)单一区域,单一区域的值可以为Rect,表示该单一区域是一个矩形区域;单一 区域的值也可以为位图(Bitmap),表示该单一区域是一个遍历带掩码色的图片生成的区 域,且该单一区域的XML的区域节点有图像属性,该图像属性的值描述用于生成该区域的 带掩码色图片的路径。(2)合成区域,XML描述中该合成区域节点下有区域子节点,即合成区域包括多个 子区域,该多个子区域的每个子区域可为单一区域或合成区域,若子区域为合成区域,则该 子区域又包括多个子区域,如此划分。在一实施例中,称子节点表示的区域为父节点表示的区域的子区域,父节点所 表示的区域为子节点表示的区域的父区域。每个子区域在XML的区域节点有组合方式 (Mode)属性,表示每个子区域在其父区域中的合并方式,该合并方式可以为并集、交集或 差集等。同时,每个子区域在XML的区域节点有区域的排列方式(Align)属性,区域的排 列方式属性与合成区域中子区域的布局有关,表示每个子区域处于其父区域剩下区域中 的位置。区域的排列方式为Left,表示子区域处于其所在父区域剩下区域的最左边;区域 的排列方式为Right,表示子区域处于其所在父区域剩下区域的最右边;区域的排列方式 为Top,表示子区域处于其父区域的顶部;区域的排列方式为Bottom,表示子区域处于其父 区域剩下区域的底部;区域的排列方式为LeftVMretch,表示子区域处于其所在父区域剩 下区域的最左边,且高度与其所在父区域一样;区域的排列方式为RightVMretch,表示子 区域处于其所在父区域剩下区域的最右边,且高度与其所在父区域一样;区域的排列方式 为TopHMretch,表示子区域处于其所在父区域剩下区域的顶部,且宽度与其所在父区域一 样;区域的排列方式为BottoniBtretch,表示子区域处于其所在父区域剩下区域的底部, 且宽度与其所在父区域一样;区域的排列方式为client,表示子区域占满其所在父区域剩 下区域的全部区域。
其中,当子区域的排列方式属性为LeftVStretch,RightVStretch, TopHStretch, BottomHStretch, client时,该子区域是可支持拉伸的。当父区域大小变化时,该父区 域对应的子区域会被重新生成,排列方式为LeftVStretch的子区域会被重新生成为占 满父区域剩余空间的左边,占的宽度为该子区域的Width属性指定的大小,排列方式为 RightVStretch的子区域会被重新生成为占满父区域剩余空间的右边,占的宽度为该子 区域的Width属性指定的大小,排列方式为LeftVStretch和RightVStretch的子区域 可实现窗体的垂直拉伸的不规则外观;排列方式为TopiBtretch的子区域会被重新生成 为占满父区域剩余空间的上侧,高度为该子区域的Height属性指定的大小,排列方式为 BottoniBtretch的子区域会被重新生成为占满父区域剩余空间的下侧,高度为该子区域的 Height属性指定的大小,排列方式为TopHStretch和BottomHStretch的子区域可实现窗体 的水平拉伸的不规则外观。排列方式为client的区域会被重新生成占满父区域剩余空间, 其可以实现窗体的水平及垂直拉伸。为了更好的说明合成区域的各子区域及子区域的拉伸变化,在一实施方式中,合 成区域的XML描述具体如下〈Region OID=" BottomRightRgn" Type = “ None" Align = " Client"AlignArea = " Right" >〈Region OID=" BottomRightLeftRgn" Type = " Bitmap"Image = " Mainffnd_BottomRight_LeftRegion. bmp" Mode=" OR"Align =" Left" Width = " Bitmap" Height = " Bitmap" />〈Region OID=" BottomRightRightRgn" Type = " Bitmap"Image = " MainWnd_BottomRight_RightRegion.bmp"Mode = “ OR “ Align = “ Right “ Width = “ Bitmap “ Height =〃 Bitmap" />〈Region OID=" BottomRightMidRgn" Type = " Rect" Mode=" OR"Align =" TopHStretch" Height =" 61〃 />〈/Region〉上述描述的一个窗体区域如图2A所示,该窗体为一合成区域,包括左边框
子区域10、中间框子区域20和右边框子区域30三个子区域。这三个子区域合成了 这个窗体的合成区域,合成区域的唯一标识码(OID)为〃 BottomRightRgn",左边框 子区域10的唯一标识码(OID)为“BottomRightLeftRgn “,中间框子区域20的唯 一标识码(OID)为“BottomRightMidRgn “,右边框子区域30的唯一标识码(OID) %" BottomRightRightRgn"。 其中,左边框子区域10是一个单一区域,由一张掩码位图MainWnd_BottomRight_ LeftRegion. bmp生成,大小是固定不变的;中间框子区域20是单一区域,是一个矩形区 域,中间框子区域20的排列方式为"TopHStretch",则中间框子区域20的大小是可以变 化的,该中间框子区域20将填满合成区域中由左边框子区域10和右边框子区域30占据 后剩下的空间;右边框区域30是一个单一区域,由一张掩码位图MainWnd_BottomRight_ RightRegion. bmp生成,大小是固定不变的,其中,右边框子区域30中下框区域32为掩码色 区域,生成区域时,掩码色像素将被排除出生成区域外。一个实施方式中,掩码色为洋红色RGB (255,0,254)。另外,左边框子区域10、中间框子区域20和右边框子区域30的组合方式 都为并集,因此,这三个子区域是以并集的方式组合成唯一标识码为BottomRightRgn的合 成区域。如图2B所示,该合成区域拉伸时,变化过程如下左右边框子区域是固定的,该合 成区域先将这两个区域需要占有的空间分配出去,中间框子区域20会根据剩余空间的大 小重新生成新的中间框子区域22,占满该合成区域拉伸变化分配给左右边框子区域空间后 剩余的空间。步骤S2,根据区域描述配置文件生成区域。生成区域采用的是区域生成器接收皮 肤生成模块产生的区域标识码和区域描述配置文件合成生成带有标识码的区域。生成的区 域包括单一区域和/或合成区域。如图3所示,生成的区域方法的具体流程包括以下步骤步骤S10,设定要生成区域的大小。根据实际的需要,设定要生成的区域的大小,记 为 rcClient。步骤S20,判断该区域是否为单一区域,如果是,则执行步骤S30 ;如果否,则执行 步骤S40。步骤S30,生成单一区域。如图4为一实施方式中,生成单一区域的具体流程是步骤S301,判断该区域是否由带掩码色的图片生成,如果是,执行步骤S302,如果 否,执行步骤S306。步骤S302,加载该区域对应的带掩码色的图片。一实施例中,当判断该区域是带掩 码色的图片生成,则加载该区域的带掩码色图片。步骤S303,判断是否遍历完图片的最后一行,如果是,执行步骤S304 ;如果否,执 行步骤S305。步骤S304,合并每一行得到的区域为要生成的区域。步骤S305,遍历图片一行的像素,以每相邻两个掩码色像素之间不包含掩码色像 素的区域大小,创建矩形区域,若一行能创建多个矩形区域,则遍历完一行后,将创建的多 个矩形区域合并成一个区域,然后转入下一行遍历,返回步骤S303。一实施例中,当判断没 有遍历完图片最后一行,则遍历图片一行像素,以两个相邻掩码色像素之间的不包含掩码 色像素的区域大小为参数调用创建不规则区域的函数工具创建矩形区域,若一行创建多个 区域,则调用合并区域函数体(CombineRgn)合并多个区域。为了更好的说明遍历图片一行像素生成区域的过程,举例如下若掩码色像素是 采用RGB表示的颜色055,0,255),现有一行像素,像素的颜色值是Q00,200,200),(200, 180,100),(100,100,5),(255,0,255),(190,100,100),(120,120,120),(240,240,240), (210,210,210), (255,0,255), (160,160,160), (150,150,150), (140,140,140)。则(200, 200,200)到(100,100, 这几个像素可以创建一个矩形区域,因为其后有一个像素值是掩 码色(255,0,255),接下来的(190,100,100)到(210,210,210)这几个像素可以创建一个矩 形区域,最后从(160,160,160)到(140,140,140)这几个像素可以创建一个矩形区域,再将 创建的三个矩形区域合并成一个区域。步骤S306,以设定要生成的区域的大小作为参数创建矩形区域。一实施例中,当判 断设定要生成的区域不由带掩码色的图片生成时,调用创建不规则区域的函数工具以设定要生成的区域大小作为参数创建矩形区域。步骤S40,生成合成区域。一实施例中,当判断设定区域为合成区域时,生成合成区 域。如图5为一实施方式中生成合成区域的具体流程如下步骤S400,判断所有子区域是否遍历完,如果是,则执行步骤S403,否则执行步骤 S401。一实施例中,判断所有子区域是否遍历完,可以通过判断父区域中所有子区域的节点 都被遍历过。步骤S401,根据遍历的当前子区域在该子区域所在的父区域中的属性值确定该子 区域的大小。当遍历的当前子区域所在父区域还有没被遍历的子区域时,根据当前子区域 在父区域中的属性值来确定该子区域的大小。步骤S402,根据该当前子区域的大小递归调用步骤SlO至S40生成当前子区域,然 后转入下一个子区域,并跳转到步骤S400。步骤S403,根据各子区域组合方式合并各子区 域为要生成的区域。一实施例中,当判断到所有子区域遍历完时,采用合并区域函数工具合 并各子区域生成要生成的区域。步骤S50,返回生成的区域。步骤S3,根据生成的区域及区域与窗体之间的映射关系生成不规则皮肤。其中,不规则皮肤的生成主要原理是以一个区域为参数对一个有背景图的窗体调 用窗口应用程序接口设置窗口区域(windows api SetWindowRegion),当这个区域是不规 则的时候,这个窗体显示出来也就是不规则的。在一个实施方式中,不规则皮肤的生成采用 区域与窗体之间的映射关系来实现,该区域与窗体之间的映射关系采用配置文件配置。该 配置文件可以为XML、初始化(INI)或其他类型的配置文件。一个实施例中,XML配置区域 与窗体之间的映射关系的格式举例如下<Childffindow OID = “ ComMsgBox “ BgType = “ Color “ BgColor =“#0θ121ει “ Width = “ 276 “ Height = “ 125 “ RegionID =“ControlffindowRegion“ />其中,唯一区域标识码的值为ControlWindowRegion,表示窗体ComMsgBox和唯 一区域标识码为ControlWindowRegion的区域有映射关系。当ComMsgBox被显示之前, 唯一标识码为ControlWindowRegion的区域会作为参数通过应用程序接口设置窗体函数 (API SetffindowRgn)设置给窗体ComMsgBox,因此ComMsgBox显示出来的时候外形轮廓就 是ControlWindowRegion这个区域的形状。上述不规则皮肤生成的方法还包括根据应用程序窗体的变化实现不规则皮肤的 拉伸,如图6为一实施方式中,皮肤拉伸变化的具体流程如下步骤S601,获取窗体拉伸后的大小。步骤S602,根据区域描述配置文件,获取窗体拉伸前所对应的区域。通过区域描述 配置文件中的区域的标识码属性,获取拉伸窗体所对应的区域。步骤S603,根据所获取的窗体拉伸后的大小及窗体拉伸前对应的区域生成与拉伸 后的窗体相对应的新区域。利用区域生成器根据窗体拉伸后的大小,生成与拉伸后的窗体 对应的新区域。步骤S604,将生成的新区域配置给拉伸后的窗体,即实现了不规则皮肤的拉伸。图7为一实施方式中一种不规则皮肤生成的系统结构示意图,该系统包括区域生成器40和皮肤生成模块50。区域生成器40获取区域描述配置文件,根据区域描述配置文件生成区域。区域描 述配置文件描述的内容包括区域标识码、区域类型、区域图片路径、区域的宽度、区域的高 度、区域的合并方式和区域的排列方式。区域描述配置文件对区域的描述如上述不规则皮 肤生成的方法中定义描述。一实施例中,区域生成器40包括单一区域生成模块400、合成区域生成模块401和 判断模块402。判断模块402用于判断设定要生成的区域的类型。单一区域生成模块400 在判断模块402判断要生成的区域为单一区域时则根据区域描述配置文件生成单一区域。 合成区域生成模块401在判断模块402判断要生成的区域为合成区域时则根据区域描述配 置文件生成合成区域,所述合成区域包括多个子区域,所述子区域为单一区域和/或合成 区域。—实施方式中,单一区域生成模块400进一步用于在判断到该要生成的区域为带 掩码色的图片生成时加载该区域对应的带掩码色的图片;加载该区域对应的带掩码色的图 片;遍历图片一行的像素,以每相邻两个掩码色像素之间不包含掩码色像素的区域大小, 创建矩形区域,若一行能创建多个这样的区域,则遍历完一行后,将这些区域合并成一个区 域,然后转入下一行遍历,直至遍历完所有的图片;合并每一行得到的区域为要生成的区 域;输出生成的单一区域。另一个实施方式中,单一区域生成模块400进一步用于在判断到该设定要生成的 区域为创建矩形区域生成的区域时以设定要生成的区域大小作为参数创建矩形区域;输出 生成的单一区域。一实施例中,单一区域生成模块400调用创建不规则区域的函数工具以 设定要生成的区域大小作为参数创建矩形区域。一个实施方式,合成区域生成模块401进一步用于遍历一子区域;获取当前子区 域在所在的父区域中的属性值确定该子区域的大小并生成当前子区域,然后转入下一个子 区域,直至遍历完所有子区域;获取各子区域组合方式合并各子区域为要生成的区域;输 出生成的合成区域。皮肤生成模块50用于根据生成的区域及区域与窗体之间的映射关系生成不规则 皮肤。其中,不规则皮肤的生成主要原理是以一个区域为参数对一个有背景图的窗体调用 窗体应用程序接口设置窗体区域(windows apiSetWindowRegion),当这个区域是不规则的 时候,这个窗体显示出来也就是不规则的。在一个实施方式中,皮肤生成模块50接收生成 的区域及区域与窗体之间的映射关系进行配置生成不规则皮肤。该区域与窗体之间的映射 关系采用配置文件配置。该配置文件可以为XML、INI或其他类型的配置文件。一个实施 例中,皮肤生成模块50采用XML配置区域与窗体的映射关系举例如下<ChildWind0W OID =〃 ComMsgBox" BgType = “ Color" BgColor = “ #0el21a〃 Width = “ 276〃 Height =〃 125〃 RegionID = “ ControlffindowRegion" />其中,RegionOID 的值为 ControlffindowRegion,表示窗体 ComMsgBox 禾口 OID为ControlWindowRegion的区域有映射关系。当ComMsgBox被显示之前,OID 为ControlWindowRegion的区域会作为参数通过API SetffindowRgn被设置给窗体 ComMsgBox,因此ComMsgBox显示出来的时候外形轮廓就是ControlWindowRegion这个区域 的形状。
上述不规则皮肤生成的系统能够用于根据应用程序窗体的变化实现不规则皮肤 的拉伸,具体包括皮肤生成模块50进一步获取窗体拉伸后的大小,并将获取的窗体拉伸 后的大小传递给区域生成器40;区域生成器40进一步获取该窗体拉伸前对应的区域,并根 据窗体拉伸后的大小生成与拉伸后的窗体对应的新区域并将该新区域配置给拉伸后的窗 体,实现了不规则皮肤的拉伸。—实施例中,区域生成器40根据区域描述配置文件中区域标识码,获取该窗体拉 伸前所对应的区域,并根据新窗体的参数信息生成对应的新区域,将生成的新区域配置给 新窗体,即实现了不规则皮肤的拉伸。上述不规则皮肤生成的方法及系统,采用配置文件描述区域生成区域,并根据生 成的区域及区域与窗体之间的映射关系,生成不规则皮肤,达到了不用修改代码只需配置 文件就可以快速动态配置不同的不规则皮肤,且能根据窗体变化重新生成新的对应区域, 实现了拉伸时的不规则外观效果。另外,上述不规则皮肤生成的方法及系统能产生多样化的外观,能很好的支持版 本界面变化大的桌面客户端软件。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并 不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保 护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种不规则皮肤生成的方法,包括以下步骤获取区域描述配置文件,建立区域与窗体之间的映射关系;根据区域描述配置文件生成区域;根据生成的区域及区域与窗体之间的映射关系生成不规则皮肤。
2.根据权利要求1所述的不规则皮肤生成的方法,其特征在于,所述区域描述配置文 件描述的内容包括区域标识码、区域类型、区域图片路径、区域的宽度、区域的高度、区域 的合并方式和区域的排列方式。
3.根据权利要求1所述的不规则皮肤生成的方法,其特征在于,所述区域与窗体之间 的映射关系通过配置文件建立。
4.根据权利要求1或2所述的不规则皮肤生成的方法,其特征在于,所述生成的区域包 括单一区域和/或合成区域,所述生成区域的步骤具体为A.设定要生成区域的大小;B.判断该区域是否为单一区域,如果是,则执行C,如果否,则执行D;C.根据区域描述配置文件生成单一区域;D.根据区域描述配置文件生成合成区域;E.返回生成的区域。
5.根据权利要求4所述的不规则皮肤生成的方法,其特征在于,所述步骤C中生成单一 区域的步骤具体为Cl.判断该区域是否由带掩码色的图片生成,若是,执行步骤C2,否则执行步骤C6 ;C2.加载该区域对应的带掩码色的图片;C3.判断是否遍历完图片的最后一行,若是,执行步骤C4,否则,执行步骤C5。C4.合并每一行得到的区域为要生成的区域。C5.遍历图片一行的像素,以每相邻两个掩码色像素之间不包含掩码色像素的区域大 小,创建矩形区域,若一行能创建多个矩形区域,则遍历完一行后,将创建的多个矩形区域 合并成一个区域,然后转入下一行,返回步骤C3 ;C6.以设定要生成的区域的大小作为参数创建矩形区域。
6.根据权利要求4所述的不规则皮肤生成的方法,其特征在于,所述步骤D中的所述合 成区域包括多个子区域,所述子区域为单一子区域和/或合成子区域,所述生成合成区域 的步骤具体为Dl.判断所有子区域是否遍历完,若是,则执行D4,否则执行步骤D2 ;D2.根据遍历的当前子区域在该子区域所在的父区域中的属性值确定该子区域的大D3.根据遍历的当前子区域的大小递归调用步骤A D生成当前子区域,然后转入下一 个子区域,并跳转到步骤Dl ;D4.根据各子区域组合方式合并各子区域为要生成的区域。
7.根据权利要求1或2所述的不规则皮肤生成的方法,其特征在于,所述方法还包括 获取窗体拉伸后的大小;根据区域描述配置文件,获取所述窗体拉伸前所对应的区域; 根据所获取的窗体拉伸后的大小及所述窗体拉伸前对应的区域,生成与拉伸后的窗体相对应的新区域;将生成的新区域配置给拉伸后的窗体。
8.一种不规则皮肤生成的系统,其特征在于,该系统包括区域生成器,获取区域描述配置文件,根据区域描述配置文件生成区域;皮肤生成模块,获取区域与窗体之间的映射关系,根据所述生成的区域及区域与窗体 之间的映射关系生成不规则皮肤。
9.根据权利要求8所述的不规则皮肤生成的系统,其特征在于,所述区域描述配置文 件描述的内容包括区域标识码、区域类型、区域图片路径、区域的宽度、区域的高度、区域 的合并方式和区域的排列方式。
10.根据权利要求8所述的不规则皮肤生成的系统,其特征在于,所述区域与窗体之间 的映射关系通过配置文件建立。
11.根据权利要求8所述的不规则皮肤生成的系统,其特征在于,所述区域生成器包括 单一区域生成模块、合成区域生成模块及判断模块;所述判断模块用于判断设定要生成的 区域的类型;所述单一区域生成模块在判断模块判断要生成的区域为单一区域时则生成单 一区域,所述合成区域生成模块在判断模块判断要生成的区域为合成区域时则生成合成区 域。
12.根据权利要求11所述的不规则皮肤生成的系统,其特征在于,所述单一区域生成 模块进一步用于在判断到该要生成的区域为带掩码色的图片生成时加载该区域对应的带 掩码色的图片;遍历图片一行的像素,以每相邻两个掩码色像素之间不包含掩码色像素的 区域大小,创建矩形区域,若一行能创建多个矩形区域,则遍历完一行后,将这些区域合并 成一个区域,然后转入下一行遍历,直至遍历完所有的图片;合并每一行得到的区域为要生 成的区域;输出生成的单一区域。
13.根据权利要求11所述的不规则皮肤生成的系统,其特征在于,所述单一区域生成 模块进一步用于在判断到该设定要生成的区域为创建矩形区域生成的区域时以设定要生 成的区域大小作为参数创建矩形区域;输出生成的单一区域。
14.根据权利要求11所述的不规则皮肤生成的系统,其特征在于,所述合成区域包括 多个子区域,所述子区域为单一区域和/或合成区域,所述合成区域生成模块进一步用于 遍历子区域;获取所述子区域在所在的父区域中的属性值,确定该子区域的大小并生成当 前子区域,然后转入下一个子区域,直至遍历完所有子区域;获取各子区域组合方式合并各 子区域为要生成的区域;输出生成的合成区域。
15.根据权利要求7至14中任一项所述的不规则皮肤生成的系统,其特征在于,所述皮 肤生成模块进一步获取窗体拉伸后的大小并将所述窗体拉伸后的大小传递给所述区域生 成器;所述区域生成器进一步根据区域描述配置文件获取窗体拉伸前对应的区域,并根据 获取的窗体拉伸后的大小生成与所述拉伸后的窗体相对应的新区域,并将所述新区域配置 给拉伸后的窗体。
全文摘要
本发明涉及一种不规则皮肤生成的方法及系统,该方法,包括以下步骤获取区域描述配置文件,建立区域与窗体之间的映射关系;根据区域描述配置文件生成区域;根据生成的区域及区域与窗体之间的映射关系生成不规则皮肤。该系统包括区域生成器,获取区域描述配置文件,根据区域描述配置文件生成区域;皮肤生成模块,获取区域与窗体之间的映射关系,根据所述生成的区域及区域与窗体之间的映射关系生成不规则皮肤。上述不规则皮肤生成的方法及系统,采用配置文件描述区域并生成区域,进而生成不规则皮肤,达到了不用修改代码只需配置文件就可以快速动态配置不同的不规则皮肤,且根据窗体变化重新生成新的对应区域,实现了拉伸时的不规则外观效果。
文档编号G06F9/44GK102135876SQ20101010217
公开日2011年7月27日 申请日期2010年1月21日 优先权日2010年1月21日
发明者吴运声, 王嘉晋 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1