设计开发

[ZT]Eliminate flicker when painting on a form or a TPaintBox control.

Answer:
A lot of programmers complain about flicker when they draw on a TPaintBox control, when they draw on the form’s Canvas, or when they paint on the Canvas of a control that they have written. One newsgroup post contained a subject line that read: “TPaintBox wicked flicker, can it be stopped.” The answer is yes, and the solution is simple, once you understand what is going on.

Continue reading…

关于hekkus sound system的wins build(2)

wins build在模拟器上出现system error(-2)的问题估计就是由于作者发布在包内的dll是给S60 2nd用的,所以在模拟器上无法加载。
播放音乐的问题已经解决了,在对比了手机上现有的hss.dll和发布包内的hss.dll的大小后发现版本不一致(2个dll大小不一样),于是意识到有可能是由于dll版本不一样导致的hssMusic在load的时候出现错误,于是删除了手机上的hss.dll(很奇怪的是,没有发现哪个程序包安装的这个dll,因为怀疑到的所有edge的游戏在删掉了这个dll后仍能正常运行,难道他们都用的是static lib?!那这个dll是裝哪个的时候弄过来的…),重新打包,这次将新的dll写进pkg里安装,ok,mod音乐正常播放了,加载mod文件的方式自己写好了,就是自己把文件读如内存,然后用load内存地址版的hssMusic的load函数加载,测试通过,下次放出代码。
现在如果找不到能在emulator上工作的dll版本的话,以后模拟器调试其他东西的时候就得把声音代码闭掉了,这岂不是很郁闷?

关于hekkus sound system的wins build

在研究了nokia官方提供的sound mixer例子后,发现其提供的方法使用起来不是很方便,比如例子中的wav文件好像只是扩展名是wav,并不是一般见到的win上的wav,内容只是一些sound的data没有像win上wav的一些必要格式(因为用wmp无法识别这种wav),但基本的混音作法已经基本掌握了。

Continue reading…

Carbide.c++ 1.2导入项目时的一个问题

Cabide.c++导入symbian项目的时候只能通过.bld文件导入,不像CodeWarrior一样可以用.mmp,问题出现在如果我把要导入的项目放在carbide的默认workspace中的时候在导入的最后一步,会提示已有一个同名的项目存在(如果不放在workspace目录中则没事),不知道这是bug还是我的导入操作有问题,研究中…

Gdi+画图时的颜色变换矩阵

今天在用gdi+画图片的时候,因为需要用到alpha混合实现半透明效果,本来以为像swt一样有个直接的setAlpha什么的,后来发现并非如此,gdi+实现的方式是通过”颜色变换矩阵”,而且,这样不只能做到改变画图时的alpha还能实现一些其他的颜色变换,比如反色,黑白等等,原理有点像D3D的变换矩阵,codeproject上的一篇文章对此解释的很清楚了,留个记录以后参考:http://www.codeproject.com/vb/net/colormatrix.asp

[ZT]Font应用

可以通过iEikonEnv-〉***Font()来获得Cfont指针。字体有TitleFont(),DenseFont(),DenseFont(),AnnotationFont(),Font() 共5种。画下划线的方法
font = iEikonEnv->LegendFont();
textPoint.iY = (aRect.Height() / KMiddleTextTwoVertAlign); gc.UseFont(font);//使用legendFont
gc.SetPenColor(colorBlue);//定义gc的clor
gc.SetUnderlineStyle(EUnderlineOn);//画下划线
gc.DrawText(text, textPoint); gc.SetUnderlineStyle(EUnderlineOff);//下划线结束
gc.DiscardFont();//释放内存中使用的discard

Continue reading…

TScrollBox内加TImage后的滚动速度

当TScrollBox内的TImage过大且TScrollBox本身Bound也较宽的时候会出现滚动条在滚动的时候明显延迟的情况,可能是由于我的绘图方式问题,现在是用GDI+通过TImage的handle直接绘图,另外不是在TImage的OnPaint里去重绘的,而是用了timer定时更新,因为我需要实现一些动画效果,现在尝试过将timer定时绘图的部分用一个TThread单开一个线程实现,但效果仍不是很理想。还尝试了一下根据TScrollBox的滚动条确定TImage的可视区域并用SetClip减掉没用的部分,最后也是稍微好了一点,当ScrollBox很大(整个窗口全屏的时候),拖动滚动条依然会有延迟,目前正在继续研究中……