很多技术其实都是有技巧的

        很久以前,我以为写程序是不存在技巧的,任何需要的资料都可以在网络上查找到,但最近几年发现这个观点并非百分之百正确。任何一个技术,即使是小到一个按钮的绘制,里面都是有技巧的,而且大多数真正做过的人对这些都三缄其口,留一手。         老外,慷慨吧,到处都是他们的开源项目,但一些很细节很内幕的东西,他们是秘而不宣的。举个小例子:我经常在Delphi里面使用C语言的东西,因为C语言的资源非常丰富。一般情况下我是翻译,当然 ...阅读更多

 阅读全文 分类:未分类 10 Comments 2013-11-01

Delphi中位的应用

        本文属于基础类文章,只适合初学者,高手请止步。另外,本文的前置知识可以参考本站《 基于Delphi的Windows程序设计(一)》一文。         什么是位(BIT)?其实就是字节的最小组成单位,例如:一个Byte类型的变量占用1个字节,也就是占用8位。一个Word类型占用16位。熟悉C语言的朋友如果使用过位域,可能对此不陌生。例如,IP头结构的定义: [sourcecode language="c"] /* ip ...阅读更多

 阅读全文 分类:基础知识 4 Comments 2013-10-31

上帝以为自己是谁-纪念库布里克诞辰80周年(转)

        仅凭西方诞生了库布里克,以及西方文化界对库布里克的推崇这一点,我们就可以断言,那里的文化系统、传统和体统,统统比我们这边高明和先进。差距至少有半个世纪。当然,这种对比唯一的意义仅在于说,目前中国文化的现状,还没到理解库布里克的程度,因为我们还不知道如何看待斯皮尔伯格呢。         所以我们只能把他放在西方的那个系统去说——在那边,那些拥有最一般鉴赏力的人,比如美国电影界里有眼光的资本家和大牌演员,他们对库布里克的评 ...阅读更多

 阅读全文 分类:未分类 2 Comments 2013-08-30

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

我们的透明皮肤控件设计系列到此告一段落了,想进一步学习的朋友,可以找一些当前流行的DirectUI的资料来看看。 所谓DirectUI,意思是直接画的,例如QQ之类,除了窗口外,全部控件都是画出来的,没有单独的句柄。DirectUI的好处在于没有句柄外,因为全部控件都是画在一张画布上面,所以闪烁的机会更加少。实际上,Delphi本身所有从TGraphicControl继承下来的控件也是无句柄的,例如TLabel。另外有一个控件包叫DXScene(应该就是FireMonkey的前身)也是基于DirectUI的,除了全部控件都是画的外,它还是基于3D坐标系的,而且是直接在显存里面显示的: 1、原始 ...阅读更多

 阅读全文 分类:界面设计 16 Comments 2013-08-18

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

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

 阅读全文 分类:界面设计 2 Comments 2013-08-18

卑劣的街头,肮脏的聚会(转)

卑劣的街头,又一部韩国黑社会电影。但我更喜欢它的英文名《A Dirty Carnival》。 从名字就可以看出导演对黑社会的一种态度,但是影片却远没有那么简单。当在夜总会中烂醉如泥的检察官揪着柄斗的耳朵说:“败类、寄生虫”的时候,谁才是真正的败类、寄生虫?也许答案远没有黑社会是败类、检察官是寄生虫那么简单。 柄斗为了全家人的生活加入了黑社会,但这个在小说电影中被描绘得纸醉金迷、平步青云的地方,却让他痛苦不已——入会几年了一无所有,家人还住在小小的旧房子中,自己的手下则在租来的房子中过着吃不饱穿不暖的日子。仅仅到这里就可以明白导演的良苦用心:不用去看那些其他的黑社会电影了,他们误导了你们,那并不 ...阅读更多

 阅读全文 分类:未分类 一条评论 2013-08-14

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

滚动条对于界面来说也是非常重要的。修改系统默认滚动条一般有三种方法: 一、覆盖法 覆盖法顾名思义就是创建一个跟滚动条大小一样的控件,覆盖在原来的滚动条上面,当有消息的时候,直接“漏”下去给原来真正的滚动条: [sourcecode language="delphi"] procedure TWinScroll.WMNCHitTest(var Msg: TWMNCHitTest); begin Msg.Result := HTTRANSPARENT; end; [/sourcecode] 优点:不用自己计算变化范围。 缺点:大小无法改变。例如比系统原来的滚动条小的化,就盖不住原来的了。 二、控件 ...阅读更多

 阅读全文 分类:界面设计 9 Comments 2013-08-14

TCP程序设计系列(一)

很多Delphi的使用者依赖控件,比如说,Indy系列。也有很多使用Winsock API的,但是或多或少都有着一些小问题,这是因为对Winsock不了解造成的。 笔者几年前曾经设计过一个完整的TCP协议栈,其中协议栈是纯粹用Delphi写的,驱动部分则是用C挂接到网卡驱动前,鉴于最近“Carberp 木马源码”已经公开,所以打算提提这方面的东西。 我们的讲座将以WinpCap作为底层收发数据部分,应用层则使用Delphi。例如,我们熟悉的两个WinSock函数: function htons(hostshort: Word): Word; begin Result := ((hostshor ...阅读更多

 阅读全文 分类:网络相关 13 Comments 2013-08-12

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

现在我们有了透明窗口,那么所有控件也应该是透明的。 控件透明,原理其实很简单,就是把父控件的图像复制到自己上面即可。例如,常用的方法是给父控件发送背景重画的消息,同时把自己的DC传递过去: SendMessage(Parent.Handle, WM_ERASEBKGND, DC, 0); TCtrl(Parent).PaintControls(DC, nil); 这种方法对于非自己设计的皮肤窗口也有效,但缺点是会因为父窗口重画造成闪烁。 现在因为透明窗口也是我们自己制作的,所以方法就简单多了:根据自己的坐标位置,直接从图片拷贝即可。以CheckBox为例,代码段如下: Buffer := TB ...阅读更多

 阅读全文 分类:界面设计 11 Comments 2013-08-11

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

经过上面的几篇文章的介绍,相信大家已经会自己做一个透明皮肤窗口了,但是要记住,上文因为是基础教程,所以很多细节仍然是需要处理的,例如: 1、为了加快速度,实际上可以先用MakeBmp函数制作好皮肤图片,平均颜色就是取图片右下角的一个点即可。例如QQ的皮肤包就是这么干的。 2、如果实在想运行时计算,那么可以先将图片缩小,再计算平均颜色。这样一来,循环的次数就减少了,而效果是一样的。 3、为了美观,边框可以画个线条上去,这样一来立体感就强很多:   另外,还要其它一些细节,例如 Caption,如果平均颜色是黑色,那么字体应该自动换成白色。我在这里偷了个懒,直接使用了Blur算法,根据字 ...阅读更多

 阅读全文 分类:界面设计 12 Comments 2013-08-11


分类

链接

RSS