skjwh's profileskjwh's space: a live li...BlogListsNetwork Tools Help

skjwh

至虚极,守静笃
No list items have been added yet.
No list items have been added yet.
No list items have been added yet.

skjwh's space: a live life at live

上善若水
1/26/2009

大年初一,阴

我的日志总是带着幽怨的酸气,因为我只有在心情不好的时候才会想写日志。而且,往往大家喜不自禁欢天喜地的时候,我就特别容易滋生不良情绪。不过事情总是那么巧,这时候总会有事情适时的发生,从而让我的不良情绪完美附着。

我是一个纤细的人,却偏偏生着粗大的神经。我不知道什么是真正的开心,也不知道什么是真正的悲伤,因为我的神经包容着这所有的情绪,它们不能触动我本身。可是在某些机缘下它们泄露出来的时候,却能一举让我或升入天堂,或跌入谷底。

茕茕白兔,东走西顾;衣不如新,人不如故。爱,无有加给故人。情,有无少予来者?我本是个多疑的人,多疑而多情。我始终在走,但始终走不出来。我看得到路,却看不到人。

现实还是理想?我选择轰轰烈烈。可是你不知道,你不是那个女主角,却在女主角的位置上。

阴霾的一年之初,不知道何时才能迎到光亮。

7/22/2008

2008年7月22日

累死我了,整整一天,终于搬完了,并且收拾的差不多了。洗澡之后上上小网,我们的生活如此美好。
附上新窝照片。

20080722

7/21/2008

2008年7月21日

今天人品大爆发,本来要搬到遥远的玉泉路的,结果还是留在了中关村,搬家方便多了,甚至几个月前丢的钱包今天居然也找到了,虽然钱已经被掏空了。在此感谢fc同学向保卫部门提供我的联系方式,哈。
根据人品守恒定律,我把未来三年的人品都用光了,估计两年之后毕业都有困难。所以现在打算广施仁德,积累人品,欢迎来人打劫,有意者请拨打热线110并声明“我是xxx,我要抢劫!”。
7/18/2008

老诗四首

其一:
梁祝故事传千古,爱意缠绵终受阻。怎奈孱者争无望,空留悲音于是处。
其二:
沙风瑟瑟频碰头,一片唏嘘志难酬。都知一子全盘败,怎奈天地唱浮游。
其三:
蝇拍无怜悯,声声葬微魂。敢问天与地,莫非寻生命?
其四:江城子
十六七年心慌慌,金牛哞,银蛇唱,转眼五生,身长智未长。纵使全年千般错,理不致,米变糠。
N年夙愿一朝行,手足舞,乐志扬,仰天大笑,血肉终有望。甘付膂力映后勋,红日升,光四放。
4/26/2008

Bitblt函数用于DDB图像分割

Windows的SDK编程中对于DDB位图的显示,Bitblt函数毫无疑问是功能最为强大的首选。而结合内存设备描述表,这个函数可以实现对位图的分割功能。这个分割的意义是:将一幅位图按定义的尺寸分割开来,并为其赋予新位图句柄(HBITMAP)。
下面是WM_PAINT消息中的例程。
为了创建内存设备描述表,必须首先拥有针对实际设备描述表。如:
hdc = BeginPaint (hwnd, &ps) ;
创建的两个位图句柄,一个是源位图句柄hbmp,一个是临时位图句柄,用来传递位图的选定部分。
HBITMAP hbmp, hbmpTemp;
另外,需要定义一个位图结构:
BITMAP bm;
载入资源位图:
hbmp=LoadBitmap(g_hinst,MAKEINTRESOURCE(422));
将源位图的结构参数保存到bm中:
GetObject(hbmp,sizeof(BITMAP),&bm);
采用bm中的信息建立新的位图,bm.bmHeight/16表示新图像是原来图像的上半部分1/16:
hbmpTemp=CreateBitmap(bm.bmWidth,bm.bmHeight/16,
bm.bmPlanes,bm.bmBitsPixel,NULL);
创建内存设备描述表:
hdcmem=CreateCompatibleDC(hdc);
hdcmemTemp=CreateCompatibleDC(hdc);
分别选定,产生交换区:
SelectObject(hdcmem,hbmp);
SelectObject(hdcmemTemp,hbmpTemp);
是时候调用bitblt函数来将源图像hdcmem中的传送到hdcmemTemp中,此时hbmpTemp就是分割后图像的句柄。
BitBlt(hdcmemTemp,0,0,bm.bmWidth,bm.bmHeight/16,hdcmem,0,32,SRCCOPY);
必要的清除工作:
DeleteDC(hdcmem);
DeleteDC(hdcmemTemp);
DeleteObject(hbmp);
EndPaint (hwnd, &ps) ;
网上的一些说法中,都需要将DDB图像转化为DIB图像,通过GetDIBits来划分,步骤上要复杂。而bitblt函数由于对复制位块的源DC和目标DC类型没有限制,实际上很强大。
模块化后,可以形成如下函数,通过参数自定义分割图像并得到位图句柄。
HBITMAP CopyBitmap (HBITMAP hBitmapSrc, int nSplitW, int nSplitH, int nHeight)
{
BITMAP bitmap ;
HBITMAP hBitmapDst ;
HDC hdcSrc, hdcDst ;

GetObject (hBitmapSrc, sizeof (BITMAP), &bitmap) ;
hBitmapDst = CreateBitmapIndirect (&bitmap) ;

hdcSrc = CreateCompatibleDC (NULL) ;
hdcDst = CreateCompatibleDC (NULL) ;

SelectObject (hdcSrc, hBitmapSrc) ;
SelectObject (hdcDst, hBitmapDst) ;

BitBlt (hdcDst, 0, 0, bitmap.bmWidth/nSplitW, bitmap.bmHeight/nSplitH,
hdcSrc, 0, nHeight, SRCCOPY) ;

DeleteDC (hdcSrc) ;
DeleteDC (hdcDst) ;

return hBitmapDst ;
}