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

2条评论 2013-08-18 admin

除了第二讲里面的平均颜色之外,实际上一个真正成熟的界面涉及的东西还是很多的。

一、九宫格算法

例如按钮,假如说,图片使用拉伸方式的话,按钮变大后会很难看,这种情况下一般使用九宫格算法。

所谓九宫格算法,就是把图片分成1~9个区域,针对不同区域作不同处理:

A———B———C——–D
|                |                 |               |
|1不变     | 2只变宽 |  3不变 |
E——LtPt—–RTPt——–F
|                |                |                |
|4只变高|5全部变 |6只变高|
G——LBPt—–RBPt——H
|               |                 |                |
| 7不变  |8只变宽  | 9不变   |
I——–J———-K———L

 

aqbutton

 

其实就是保持可能会产生锯齿的区域不变。

 

类似的算法还有三分法,例如滚动条一般就是使用这种方式。实际上,使用三分、六分还是九分,要视乎你的图片而定。所以一个好的界面,除了界面库要处理恰当,所使用的图片素材也是非常重要的。好的界面=好的界面设计人员+好的美工。

二、带滚动条的控件

例如TMemo,TListView之类,其实它们有点类似“分层”的。也就是说,滚动的时候,内容也会往上滚动,如果不处理,背景和内容都会发生重叠。所以要拦截各种消息。同时注意对于键盘和鼠标事件要禁止暂时刷新:

procedure TAQSkinMemo.WMHSCROLL(var Message: TWMHScroll);
begin
if FTransparent then SendMessage(Handle, WM_SETREDRAW, 0, 0);
inherited;
if FTransparent then SendMessage(Handle, WM_SETREDRAW, 1, 0);
if FTransparent then PaintClient;
UpDateScrollRange;
end;

 

分类:界面设计

2条评论 发表评论

发表评论

(必填)

(必填), (Hidden)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

TrackBack URL  |  这篇文章上的评论的RSS feed


近期文章

近期评论

文章归档

分类目录