此博客中的热门博文
Visual C++中实现双缓冲的基本原理
双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上。采取这种方法可以提高绘图速度,极大的改善绘图效果。 例如在OnDraw()函数中可以如下所述实现双缓冲,其主要步骤分为四步: CPen Pen; Pen.CreatePen(PS_INSIDEFRAME,1,RGB(225,225,0)); CBrush Brush; Brush.CreateSolidBrush(RGB(225,225,0)); CDC dcMem; CBitmap bm; CRect rc; GetClientRect(&rc); // Step 1:为屏幕DC创建兼容的内存DC :CreateCompatibleDC() dcMem.CreateCompatibleDC(pDC); // Step 2:创建位图:CreateCompatibleBitmap() bm.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height()); // Step 3:把位图选入设备环境:SelectObject(),可以理解为选择画布 dcMem.SelectObject(&bm); dcMem.SelectObject(Pen); dcMem.SelectObject(Brush); dcMem.Ellipse(0,0,50,50);//画椭圆 // Step 4:把绘制好的图形“拷贝“到屏幕上:BitBlt() pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY); dcMem.DeleteDC(); bm.DeleteObject(); 这样便实现了双缓冲,通过这个方法可以防止在VC中画图时出现屏幕闪烁的情况。
如何利用英英字典学英文
有些学生查英英字典的感觉就是“查了等于没查”,还是不知道这个词的意思。这种感觉我可以理解,我以前也是这样,在英英字典里查到的例句很有用,但是记不住单词的意思,隔天就忘,所以很多人和我当年一样,总是对英汉双解字典中的英语解释视而不见。 其实看不惯英英字典的根源在于我们对背单词错误的态度。每个人总以为一个英语单词有它对应的所谓“精确”的中文解释,从而用中文去理解单词,其实能用中文精确解释的单词少之又少,大部分单词并不是我们所背的中文意思,我们不仅会背错单词,而且会养成学英语的坏习惯。那么怎么办呢?我希望大家用单词的感觉代替中文理解。 我在课上也说过很多次,初次记单词不要去背什么所谓的中文解释,只需要扫一眼中文的一个意思,大概了解后就用之后的例句以及组词的方法“体会”几遍这个词,整个过程很快很轻松。当下次看到这个单词的时候当然还不能不看中文就说出它的意思,但要注意,这不是忘记,而是很正常的熟悉单词过程,我们只需要再轻轻松松地重复上述组词的过程就行,两三遍后大部分单词就没什么问题了。我这里所说的没有问题是针对我们的阅读和听力来说,而不是像一些大部分学生那样用一种根本不存在的错误的考查方法——默写中文含义,来考查自己,这样做又有什么必要呢? 我还想着重提醒大家的是看词汇书或者查字典只占我们学习词汇一小部分,更多的还要在英语语境当中体会,比如阅读文章,看电影,听有声资料等等。当然,这里又涉及到我之前提到的用英语直接阅读的问题了。如果我们拿中文背单词,我们就必然涉及到用中文来阅读,但如果我们直接用英语的感觉来背,听起来好像很困难很没用,但只要我们用一段时间熟悉,之后就可以拿英语更快地阅读了。 我最后给大家提三个建议: 一、重视字典的例句。字典的例句经过编纂者的精挑细选,非常具有代表性,我们应该反复读,甚至摘抄并且背下来。 二、用英英字典查熟词。如果阅读中遇到生词我们可以用中文字典,但是遇到自己比较熟的单词大家不妨查查英英字典,看看和以前背的中文解释有什么不同。 三、养成读字典的好习惯。许多文学家都提到过平时要阅读字典,我们平时也很难找到像某本权威字典那样经过那么多人认真编纂、经过那么久时间考验的书了。读字典,包括英语和中文字典,其实很有意思。
评论