\n'); } function resize(obj){ if(window.event.srcElement.tagName == 'A'){ return; } obj.parentNode.childNodes[2].style.display = obj.parentNode.childNodes[2].style.display=='none' ? 'block': 'none'; obj.parentNode.childNodes[3].style.display = obj.parentNode.childNodes[3].style.display=='none' ? 'block': 'none'; obj.parentNode.childNodes[4].style.display = obj.parentNode.childNodes[4].style.display=='none' ? 'block': 'none'; }
raindust
我的日志
分类: 默认栏目 |
窗口重绘,会发送一个WM_PAINT消息,擦除原窗上的消息,重新绘制
用户绘制图形:
由于所有绘制图形时,所有的图形元素均可概括为几个要素(如:起点,终点,绘制类型等),可通过一个类的对象将所有图形的以上要素保存下来.由于,对象的空间未知,故可用MFC中的一个CObArray的集合类来实现.
要注意对象与作用域(即{}之间的部分)之间的关系:当对象为局部对象时候,作用域结束时,便会自动调用对象的析构函数. 则需将对象声明为指针对象,然后通过new在堆栈中申请空间,这样对象的生命周期与程序的周期同长(除非手动调用delete)
OnDraw为一个虚函数,为何重绘消息为WM_PAINT,其响应函数为OnPaint,却会响应虚函数OnDraw?主要是在OnPaint的父类函数调用了OnDraw.
CPaintDC:是从CDC继承而来的,在构造函数的时候调用CWnd::BeginPaint,析构时候调用CWnd::EndPaint(具体参加MSDN),故声明CPaintDC可直接声明和使用其对象进行操作,相似的还有CClientDC.注意BeginPaint和EndPaint只能被CPaintDC及其子类调用,其他的类只能通过GetDC和ReleaseDC实现.
在AppWizard中未将CScrollView作为基类函数时实现窗口的滚动功能:
在OnPaint函数中,在调用OnDraw函数之前调用OnPrepareDC,手动将CMyView类中的继承类由CView替换为CScrollView,并通过查找替换所有的CView.通过CScrollView::SetScrollSizes实现
映射模式的转换:(参见MSDN:Coordinate Spaces and Transformation)
坐标空间:
Win32应用程序设计接口(API)使用四种坐标空间:世界坐标系空间,页面空间,设备空间,和物理设备空间.应用程序通过世界坐标系空间对图形输出进行旋转,斜切或者反射.
Win32API吧世界坐标系空间和页面空间称为逻辑空间;物理设备空间通常指应用程序窗口的客户区,但是它也包括整个桌面,完整的窗口(包括框架,标题栏和菜单栏)或打印机的一页或绘图仪的一页纸.物理设备的尺寸随显示器.打印机或绘图仪所设置的尺寸而变化.
在图形中要做某个区域的局部放大,可通过设置世界坐标系空间(具体参加MSDN)
页面空间到设备空间的转换:
页面空间到设备空间的转换是原Windows接口的一部分.这种转换确定与一特定设备描述表相关的所有图形输出的映射方式.
所谓映射方式是指确定用于绘图操作的单位大小的一种度量转换.映射方式是一种影响几乎任何客户区绘图的设备环境属性.另外还有四种设备环境属性:窗口原点,视口原点,窗口范围,和视口范围,这四种属性与映射方式密切相关.
页面空间到设备空间的转换所用的是两个矩形的宽与高的比率,其中页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口,Windows把窗口原点映射到视口原点,把窗口范围映射到视口范围,就完成了这种转换.
设备空间到物理空间的转换由几个独特之处:它只是限于平移,并由Windows的窗口管理部分控制,这种转换的唯一用途是确保设备空间的原点被映射到物理设备上的适当点上.没有函数能设置这种转换,也没有函数可以获取有关数据.
一旦应用程序建立了设备描述表,并立即开始调用GDI绘图或输出函数,则运用默认页面空间到设备空间的转换和设备空间到客户区的转换(在应用程序调用SetWorldTransform函数之前,不会出现世界坐标空间到页面空间的转换).
Windows对所有的消息(如WM_SIZE,WM_MOUSEMOVE,WM_LBUTTONDOWN),所有的非GDI函数和一些GDI函数(如GetDeviceCaps函数),永远使用设备坐标.
继续回到滚动视图的实现:
可通过虚函数OnInitialUpdate实现(此函数在第一次调用OnDraw函数之前调用),在函数中实现SetScrollSizes函数,具体参见MSDN
注意:在画线的时候,因为GDI的函数使用的是逻辑坐标,而图形在显示的时候,Windows需要将逻辑坐标转换未设备坐标.
当窗口发生重绘的时候,会调用OnPrepareDC函数,重新设置设备上下文属性,将视口设置未(0,-150)
为解决窗口重绘之后,发生图形错位的现象,在绘制图形之后,保存坐标点之前,调用OnPrepareDC函数,调整显示上下文的属性,将视口的原点设置为(0,-150),这样窗口的原点也就是逻辑坐标(0,0)将别映射为设备坐标(0,-150),然后调用DPtoLP函数将设备坐标转换为逻辑坐标.
CMetaDC,CMetaDC记录绘图的过程.
利用兼容DC(CCompatibleDC)保存图形:为了使兼容DC得到当前客户区的大小,可创建兼容位图CCompatibleBitmap
CClientDC dc(this);
if(!m_dcCompatible.m_hDC)
{
m_dcCompatible.CreateCompatibleDC(&dc);
CRect rect;
GetClientDC(&rect);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc,rect.width(),rect.Height());
m_dcCompatible.SelectObject(&bitmap);
m_dcCompatible.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
}
dc.Ellipse(&rect);
CMyView::OnDraw(...)
{
CRect rect;
GetClientDC(&rect);
}
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10757591
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10675677
我们学校樱花开了,两周前问大二的一个学弟是不是樱花开了.他说他也不清楚,然后告诉我其实也没什么好看的.我无语了一会,然后说:其实逛逛放松放松心情也是不错的哈. 我以前也觉得看樱花没意思,去逛也是路过,或者实在无聊的时候才去.其实我们学校的樱花出名也不过是成规模,而且还有点历史而已.看过去一片白色的海洋,有点壮观.
不过我觉得学校里的樱花应该叫开得悲壮才对,樱花得花期很短,而且花瓣也很娇弱,一夜的小雨就足以让她不堪承受.走在樱园路上,有风吹来,樱花花瓣纷纷飘落,而脚下则是一层白色的地毯.这中场景,很容易让人联想到一个满怀悲伤的英雄,踏着沉重的步子......樱落是我最喜欢看的.
当然可能很少会有人这样想,樱花时节是学校一年里最热闹的时候,也是一个探访好友的很好的机会.在同一个城市的老同学是肯定要来的,而从全国各地来的人也不少.学校里到处都是三五成群的同学,处处都充溢者欢乐的空气.而对于在这个城市"单挑"的我则只有羡慕的份,不过也隐隐地被他们所感染.
到了大三,感觉在学校里存在的只有记忆,希望是早已隐匿得无影无踪了,而对现实则是早已麻木了.听人说:当一个人的心里回忆占去大部分的时候,便是他变老的征兆.那么我也泰然面对这个现实,至少在大学期间吧.追忆校园里的曾经便成了我一个爱好,而学校里的樱花节,对于校内以至校外,都是一个不小的节日,再去探樱是在所难免的.
老乡约我下午去看樱花,希望今年的樱花开得很艳吧:)
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10652257
生活总是这样风雨莫测.当我刚进大学,还沉浸在对未来生活的憧憬中时,便发生了一件令我震动不小
的事.
一天晚上,我从图书馆里出来,踏着深秋的枯叶向宿舍走着.当我走到校内公路的时候,发现前面有人追
一辆车,口里还喊着什么.转眼间,车已经快到我面前,把追车人远远甩在后面.接下来的一幕令我终生难忘.
一个穿白衣服的女生忽然出现在车的前面.接着便是刺耳的刹车声......我看见一团白飞了起来,离我越来
越近,快得来不及闪避,那女生已撞到我的怀里.退了几步,靠着路灯我站定了.灯光下,我看到她,紧闭的双
眼,长长的睫毛,俏俏的鼻子下,微微抽搐的嘴唇......我的心狂跳不已,随着"砰砰"的心跳声,一股热流从
心里向上涌,如巨浪般冲向头颅,不知不觉中,已经烧红了我的面颊.颈部以上的每一个毛孔都如同泛着岩浆
的火山.
许久,我才感觉到手上粘粘的血液.一股冰冷的水银泻下,压在心里一种难以言状的沉重,刺痛.我歇斯
底里地喊了一声:"救护车!"
医院的走廊里充满着福尔马林的气味.我来回地在急救室门前走着.看着医生们专注的眼睛,我的心里
感到一点安慰.我靠在门前的墙上,回想着那个女生的面孔.一张给我从未有过的震撼的面孔......
病房里丝毫感觉不到深秋的寒冷,我微红着脸走到她的身边.她朝我笑了一下,我还没来得及组织自己
的语言,她已经开口了.
"坐吧",她指着病床边的一把椅子说.我坐下,她又笑了一下:"真谢谢你哦!"
"没什么",我不好意思地低了下头.
待我抬头,看到她的脸红了.她避开我的目光,轻轻地说:"护士把你当成我的男朋友了,她说你昨晚是在
走廊里过夜的.她叫你之前,你还在长椅上睡着."
我的心狂跳起来:"哦......我真的希望是那样."我抬头看见她嘴角的微笑.她注视着指间的线头,她的
脸更红了.
我又低下头,说:"昨晚得知你已过危险期之后本来准备回宿舍的.可当时已经是凌晨三点多了,再加上
我的眼皮老打架,腿和我罢工,身体想要降低重心,像是粘在椅子上了,接下来的事情我的大脑就不能告诉我
了."我听见她的笑声,当我和她的目光相遇的时候,她又将目光转向手里的线头,她的脸更红了.
相继沉默了一会之后,我看见她对着线头沉思,很专注.仿佛已经忽视了我的存在,我想:这样也好,我可
以仔细地看看她.
她一举一动都给我一种心跳的感觉,我注视着她的脸.脸上的红色正慢慢地消退,最后定格在我抱着她
在路灯下看到的那一幕......
懵懵中,我被医生推醒,他问我是不是死者的亲属.
死者?
我的眼前黑了一下,又重新靠住墙壁.我看到掩在女生身上的白布.我缓缓地说:"我是他男朋友."我那
已站得麻木的双腿再也无力承受身体的沉重.
看了一下手机,已经是三点多了,我拖着沉重的双腿走在清冷的接到上.我打了一个冷战,便索性脱掉外
套,朝着天空讥笑.
接下来的时间,我坐在桥边,静静地发呆,直到天色发白.
————to be continue
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10609091
CRUSH这部电影显然是反应种族歧视的,开始两个黑人青年走在路上讨论种族偏见,然后莫名其妙地抢车(至少当时看来).被抢车的人倒比他们更着急:为什么偏偏是个黑人?从下文得知他要参加竞选,那么为什么连自己抢车都要强调是不是黑人?答案显而易见,这还是个政治敏感问题.
他的妻子之后对他大发雷霆,原因是修锁匠是个黑人.或许你会说,可能是因为那个修锁匠光头,而且有纹身.而我觉得她是因为被两个黑人青年抢车之后借题发挥.光头又有纹身只是他的个人爱好,是表达自己个性的一种方式,难道你会觉得所有的光头而有纹身的人都是坏蛋?且看这个修锁匠回去和他女儿的谈话,一个可敬的父亲的形象呈现于你我眼前.
那再看看后面的事,他去一家波斯人的店里修锁,修完之后善意地告诉店主:他的门该换了.这个激进的店主之后说了一些不近情理的话.之后他的店被人砸了.那砸他店的人是这个修锁匠吗?显然不是.
那我们再看看这个波斯家庭,从刚开始买枪时,父女在店里的对话就可以看出他们常受人欺负,原因是什么?从后面的对话可以看出,别人把他们当成了阿拉伯世界的人.看来美国人的"反恐"行动已经进行的面面俱到了.而这个店主对人的态度已经接近于病态.要不是他的病态心里和过激的言论,或许自己也没那么大的麻烦.
而接下来的事则更夸张,巡警拦住一辆黑人的车,明目张胆地对他的妻子性骚扰.或许是这个巡警因为父亲的病而着急,所以...所以就把气撒在一对黑人夫妇的身上?遭人欺凌的这对黑人夫妇回家后的争吵中,丈夫对自己辩护的理由是:他们是警察,手里拿着枪.而这个理由未免太牵强.或许发生在身边的先例已经很多了,而受害者(自然是黑人)通过正当的手段也没有得到任何补偿.而且,他是个黑人导演,如果把事闹大,对自己没什么好处.可能导演的身份是一个原因,而最重要的是导演前面要加上一个黑人.
这个黑人导演在拍电影时,被同事建议(某种意义上讲说是威胁才对)重拍刚完成的片断.而理由仅仅是一个黑人的演员的一句不合理的话,倒不是表达的意思有什么问题,而是说话的风格不符合他的身份.
这部电影给我们很多的对比.
先看那两个黑人青年,一个对种族歧视极度敏感,而另一个则对这些不大在意.刚开始我们有理由喜欢前者,他对历史,政治都有自己的观点,有点像"愤青";而后者则更像个小混混.而后面我们的态度可能会有所改变,因为愤青常常犯案,而小混混还好些.而且和对歧视你的白人始终保持敌对态度也不是办法,而解决问题的办法是一方先示好.而那个小混混则有这个可能.他在公路上等顺风车能坚持一个多小时便很能说明问题了.那我且想一想,为什么他等了一个多小时而没有人愿意停下来载他?原因很简单:他是个黑人.如果你嫌理由不是很充分的话,那根据前面修锁匠的例子,便可以说他是个黑人而且戴了帽子.那看他示好的结果吧?掏自己的和车主一样的神像时,被别人误认为是把抢而被开枪打死.我们可能会认为是因为他们之前有一段争吵,而这个小混混的表达方式有点问题.那么你会因为和别人一段不愉快的争吵便认为别人要掏枪来要挟你?进而开枪将他打死?车主对小混混保持警惕很大的原因是:他是个黑人(再加上穿着一双不怎么体面的鞋子).回到主题,这两个黑人青年的不同的态度造成不同的结果:保持种族激进态度的,生活依旧平常,偶尔做做好人好事.而对种族主义不怎么在意的,最终被白人开枪打死.
再看那对巡警搭档.年龄稍大的也是个种族激进分子,电影开始时对黑人导演妻子性骚扰.青年对此愤愤,要求上司给他换个搭档.上司是个黑人,对他的搭档对待黑人的态度也有所耳闻,但还是要求这个青年为自己换个搭档的理由换个说法,为什么?他给青年说:"像我一个黑人,能爬到这个位置容易吗?"那我们再看看后面的事,对黑人导演妻子性骚扰的,冒着生命危险救了她.而青年则因为自己的一些误判开枪打死了小混混.
似乎感觉导演在有意开玩笑.这样的结果很难让人接受.可仔细想想便知:那个青年巡警先后帮助黑人,是站在人道主义的立场上.而在他的心里,对黑人还是有偏见的,而这是问题的关键.种族问题何时才能解决呢?当你描述一个人,不会在意他是什么种族的时候.强调则说明在意,这个道理是很显然的.
说到这里我不禁想起我们国家的一些地方思想很浓的人......
这部电影为何取名为"撞车"?我觉得是因为种族歧视和被种族歧视的人,就像普通的一起撞车事件一样,撞车的双方都认为自己遭受的损失更严重,而责任应该由另一方来承担.这样的撞车心里,除了双方相互争执不会再有什么结果的.
这部电影里还有一些人,像那个detective,导演赋予他的涵义这里就不一一赘述了.还有那个很感人的场景:修锁匠的女儿为父亲挡枪.感觉到要描述一件事其实不需要花很大的篇幅,有能力的导演几个画面便可以打动你.相同的例子还有"冷山(cold mountain)"里导演描述战争的场面.
这部电影拍得不错,你觉得呢?
----------raindust
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10494246
我的上个学期至今的魔兽世界之旅宣告结束了.或许有人会持怀疑态度,有朋友说:"你保证以后不玩了吗?".这个我对于自己的自控能力还是很有信心的.有朋友说我收发自如.这我也愧不敢当,如果真是那样,想到含辛茹苦的父母,想到众多亲朋好友期望的眼神,我岂不是应该天天好好学习,天天向上了?
其实在玩游戏的时候隐隐的有种负罪感,于是便索性好好玩一场,让这种负罪感逐渐积累,最终爆发.爆发的时候,便也是自己"浪子回头的时候",这便是我的独门武器.
回想起来,很多魔兽世界里的细节都历历在目.很多人感觉到网游比单机游戏更有意思,那是因为在网游里打交道的是人,而不是呆板的电脑.网游为玩家营造了一个小社会,里面的人形形色色.你会为别人的一个BUFF或者治疗而感动;也会为别人不理会他人利益的举动而反感.在游戏里,有和你同甘共苦的死党,也有让你恨之入骨的仇敌.正是这些吸引着我们,逃避现实的世界.
... ...
想到了很多,可还是要回到现实中来.要学习,要考研...
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10408316
我已经在博客网落户了,欢迎你时常过来看看,大家多多交流哦。我会在这里记录我的生活也会记录我的心情与你分享。 我的主页地址: http://www.in126.com/go/raindust
你可以通过这个链接引用该篇文章:http://realraindust.bokee.com/tb.b?diaryId=10381600
我的广告