历史档案清明梦贴吧
【铁吧梦吧一家亲】希望铁吧的亲们多回归梦吧帮助新人。
历史档案 · 保留原帖文字 · 215 条回复
回复
神棍其实没有铁棍厉害。既可当金箍棒,又可做搅屎棍。哈哈
回复28楼:
是啊,感觉梦吧好多神棍。还是铁吧好。@梦中木屋怕黑屋子
你闭上眼睛就是天黑。。
啊?!好吧,我就贴一篇多年前我以profx这个网名写的塞班编程系列文章,用来证明我还是懂点编程的。在当时那会儿我写的这个系列挺受欢迎的。
在Prox的故乡,一个美丽而遥远的星球,计算设备早已没有了屏幕显示的概念。一切图像都以思想的速度在脑海中呈现!多么美好啊!可是,自从来到地球这个落后的星球,落后的科技使他不得不重新考虑很多问题。缓慢的屏幕图像刷新速度就是问题之一。
好比下面这样一段代码。虽然能够正确地显示图像,却伴随着令人头晕的屏幕闪烁。而且那些小方块会按着顺序一个接一个的出现,纺若一条小虫(Profx很不喜欢的一种食品)!
voidCMyView::Draw(constTRect&aRect)const
{
CWindowGc&gc=SystemGc();
TRectrect=Rect();
gc.Clear(rect);
for(inti=0;i100;i+=2){
***rawRect(TRect(TPoint(i,i),TSize(50,50)));
}
}
怎么会这样呢?很简单,直接往屏幕上画图的速度是很慢的。这个问题在制作动画的时候尤其明显,因为我们可能要在一秒中之内刷新屏幕几十次。如果按每秒二十五屏的速度来刷新的话,就意味着我们要在一秒中之内画一千多个小方块!
Profx通过中央电脑查到古时候有一种叫做DoubleBuffering的办法可以解决这个问题。其实很简单:
一、在内存里生成一个和屏幕同样大小的buffer
二、在内存里(Off-screenBuffer)画图
三、把Off-screenBuffer画到屏幕上
这样做的好处有二:
一、写内存远比写屏(IO)快多了
二、无论所画图形有多复杂,我们只需要做一次IO操作!
下面我们来看看具体做法:
一、在你的mmp文件里加这么几行:
LIBRARYfbscli.lib
LIBRARYbitgdi.lib
二、假设你的Viewclass叫做CMyView。在MyView.h里加入:
#includefbs.h
...
private:
CFbsBitmap*iOffScrnBmp;
CFbsBitmapDevice*iOffScrnBmpDevice;
CFbsBitGc*iOffScrnContext;
三、在MyView.cpp里加入:
voidCMyView::ConstructL(constTRect&aRect)
{
...
iOffScrnBmp=new(ELeave)CFbsBitmap;
User::LeaveIfError(iOffScrnBmp-Create(Size(),EColor4K));
iOffScrnBmpDevice=CFbsBitmapDevice::NewL(iOffScrnBmp);
User::LeaveIfError(iOffScrnBmpDevice-CreateContext(iOffScrnContext));
}
说明一下。上面的代码除了生成了我们所需的Off-screenBuffer,即一个4096色的CFbsBitmap之外,还在它上面加了一个iOffScrnContext。这个东西(CFbsBitGc)是我们用来往我们的buffer上面画图用的工具。
继续:
CMyView::~CMyView()
{
deleteiOffScrnBmp;
deleteiOffScrnBmpDevice;
deleteiOffScrnContext;
}
voidCMyView::Draw(constTRect&aRect)const
{
//把我们的buffer清空
iOffScrnContext-Clear(Rect());
//在buffer里画方块,而不是在屏幕上
for(inti=0;i100;i+=2){
iOffScrnContext-DrawRect(TRect(TPoint(i,i),TSize(50,50)));
}
//一次性把buffer画到屏幕上
CWindowGc&gc=SystemGc();
gc.BitBlt(TPoint(0,0),iOffScrnBmp);
}
哈哈!虽然离profx的星球上的技术还有一定差距,至少闪烁和“蠕虫现象”都消失了!Profx觉得,地球这个地方,还是可以继续呆下去的。
其实梦吧怎么说呢,很多人装高手什么的,上次我去梦吧给新手普及知识,就有人批判我,因为我说出体指的是清醒入梦的过程,结果那人说“楼主,出体,就是指梦里醒来之后周围的环境和你睡觉前的环境一样,那个王心如说的不全面。”我很想吐槽他!他是看了点精品就装蒜吗~明显的是看了压床的精品和随便看到了出题这个词就乱用。而且我觉得新人们伸手要技术,要到了又不去练,我看到他们成天只想着快点清明梦,也不选择好的适合的方法,实在是无力呀。。不过好的新手也是有的,碰到有潜力的,有自己想法的新人,我都会好好教的~
WOW,Amazing!!!铁哥我赞叹的不是你的代码写的有多好,而是你能用一个可爱的故事将其串起来。
这是至高境界呀!我非常喜欢~~~
小子膜拜一下。果然是铁叔,姜还是老的辣!
嘿嘿,你看出亮点啦,令我生出知音的感觉!谢谢夸奖!
好厉害的x教授啊。。
嗯,多帮一下肯努力的,有潜质的。
我是需要被大家爱护的新人
我来也
哈哈,尊老爱幼吗?
我也同意照顾铁吧为主,暂时不要忙着拉人过来了,如果要介绍铁吧,拉人过来,稳定地观察一段再说。有毅力的,有兴趣的,看看能坚持到半年左右的可以,毕竟来了新人,大家也是要花精力去维护的。而且一旦问题略高端的话,真正能答疑的,铁吧其实也不多。这边就是个小窝,大家多少都认识一起进步才是最好的。
唔,关于答疑……我在梦吧基本就是打酱油混基友,帮助新人很重要,卖萌耍宝建交搞好关系也很重要嘛\(^o^)/~如果看见有爱的新人,还是会去按爪的,嗯,就这样子~
你不能光吆喝呀,来了得给我指点指点,我现在处于混乱期
是的呀
排铁哥,说句直白的:铁吧需要技术交流,梦吧必须得稳住;梦吧要持续进步,铁吧这边会是不可少的助力。铁吧算是梦吧一部分隐藏力量,发展得好,本身对梦吧就是一种帮助。
明显你去梦吧少了许多了。也许可以严厉铁吧的开帖制度,提高入吧门槛。那个半年啥的,铁吧里也超不过十人。给新人一个好的起点,至于他们能跑多远,就看各自的意念了。
梦吧是好门槛呀,毕竟新接触的人肯定是从梦吧开始
比如我
我最近工作忙,记梦都不经常了,没时间,自然蹲在铁吧比较多点。
木屋哥果然很博爱,半年说的是估计,估计估计啦O(∩_∩)O我的理解是,铁吧是为了愿意留下来一起爱它建设它的人存在的,新人要照顾,但决不能因为新人乱了老铁匠安心修梦的氛围。嘿嘿,木屋哥要努力挖好苗子哇~
挖到一枚秋秋已经可以让我乐呵很多年啦。
秋秋真是精辟
梦吧是华山,铁吧是后山崖边的山洞。蚂蚁是岳不群,黑铁是风清扬,哈哈哈哈。
小心蚂蚁把你绑去练辟邪剑法
吆喝也很重要啊
楼盖的好快
俺是练独孤九剑的嘿嘿。
…诶。
谁又欺负薄叔了?