Filed under: 界面设计

透明皮肤控件设计系列(八):完结篇

我们的透明皮肤控件设计系列到此告一段落了,想进一步学习的朋友,可以找一些当前流行的DirectUI的资料来看看。 所谓DirectUI,意思是直接画的,例如QQ之类,除了窗口外,全部控件都是画出来的,没有单独的句柄。DirectUI的好处在于没有句柄外,因为全部控件都是画在一张画布上面,所以闪… 阅读全文

16条评论 2013-08-18

透明皮肤控件设计系列(七):界面设计中的一些算法和技巧

除了第二讲里面的平均颜色之外,实际上一个真正成熟的界面涉及的东西还是很多的。 一、九宫格算法 例如按钮,假如说,图片使用拉伸方式的话,按钮变大后会很难看,这种情况下一般使用九宫格算法。 所谓九宫格算法,就是把图片分成1~9个区域,针对不同区域作不同处理: A---------B-------… 阅读全文

2条评论 2013-08-18

透明皮肤控件设计系列(六):滚动条处理

滚动条对于界面来说也是非常重要的。修改系统默认滚动条一般有三种方法: 一、覆盖法 覆盖法顾名思义就是创建一个跟滚动条大小一样的控件,覆盖在原来的滚动条上面,当有消息的时候,直接“漏”下去给原来真正的滚动条: 优点:不用自己计算变化范围。 缺点:大小无法改变。例如比系统原来的滚动条小的化,就盖… 阅读全文

9条评论 2013-08-14

透明皮肤控件设计系列(五):透明控件

现在我们有了透明窗口,那么所有控件也应该是透明的。 控件透明,原理其实很简单,就是把父控件的图像复制到自己上面即可。例如,常用的方法是给父控件发送背景重画的消息,同时把自己的DC传递过去: SendMessage(Parent.Handle, WM_ERASEBKGND, DC, 0); TCt… 阅读全文

11条评论 2013-08-11

透明皮肤控件设计系列(四):皮肤窗口完结篇

经过上面的几篇文章的介绍,相信大家已经会自己做一个透明皮肤窗口了,但是要记住,上文因为是基础教程,所以很多细节仍然是需要处理的,例如: 1、为了加快速度,实际上可以先用MakeBmp函数制作好皮肤图片,平均颜色就是取图片右下角的一个点即可。例如QQ的皮肤包就是这么干的。 2、如果实在想运行时计算… 阅读全文

12条评论 2013-08-11

透明皮肤控件设计系列(三):皮肤窗口进阶篇

前文的窗口如果最大化,你会发现它把任务栏也覆盖了,原因是我们窗口的 BorderStyle 设置成了 bsNone,所以要处理一下WM_GETMINMAXINFO消息: procedure TForm1.WMGETMINMAXINFO(var Message: TMessage); var Rec… 阅读全文

12条评论 2013-08-07

透明皮肤控件设计系列(二):皮肤窗口初级篇

Windows将窗口分为客户区和非客户区,例如对于标准的Windows窗口,标题栏和边框都属于非客户区,又称为NC区。对于客户区的绘制,应用程序会收到WM_PAINT消息,而非客户区,对应的消息是WM_NCPAINT。要实现皮肤窗口,需要三个步骤: 第一步:定义非客户区的大小。 要自定义非客户区… 阅读全文

11条评论 2013-08-05

透明皮肤控件设计系列(一):前言

Delphi的皮肤控件非常多,例如DynamicSkinForm等等。以前都是习惯直接使用第三方皮肤控件,后来在开发一个内部IM聊天工具的时候,发现没有现成的IM控件,网上有一些介绍模仿QQ界面的文章,但不成系列,重要的是都是“看起来像”,离”实际能使用”差的很远,于是自己开发了一个。老实说,因为以… 阅读全文

21条评论 2013-08-02


近期文章

近期评论

文章归档

分类目录