private:
CBitmap m_bitmap;
CDC m_dcMemory;m_bitmap的大小即是CListCtrl控件的大小,我想所有绘图操作,我都将画在m_bitmap上,但有个问题,我的CListCtrl控件大小是变化的,是随着父窗口的变化而变化的,在这种情况下,如何实现呢?
CBitmap m_bitmap;
CDC m_dcMemory;m_bitmap的大小即是CListCtrl控件的大小,我想所有绘图操作,我都将画在m_bitmap上,但有个问题,我的CListCtrl控件大小是变化的,是随着父窗口的变化而变化的,在这种情况下,如何实现呢?
拉伸贴图不行,有个功能是这样的,比如在m_dcMemory中画一张图片,这个图片会随着控件大变化而变化。
GetDlgItem(IDC_STATIC)->GetWindowRect(rect);
得到绘图区域的大小然后把rect传到绘图函数中 就ok了。记得刷新窗口。
你怎么做的?遇到什么问题了?
m_bitmap的大小不是你控制的吗?
list多大你就创建多大的不就可以了?
莫非楼主想在m_bitmap上自绘listctrl?
全都是自己控制,你想怎么画就怎么画啊。
如果想实现类似于windows缩略图的功能,建议没个图都要做一个数据块来保存,不管是gdi对象还是gdi+对象都可以。
然后每次改变大小的时候重新计算每个图的区域并往上贴图。如果是把所有的图片都绘制到一个CBitmap对象上,那随着listctrl的大小改变,这个CBitmap对象还是每次删除并根据当前listctrl大小重新创建好。还是那句话 想怎么画怎么画
2. API不提供对CBitmap(HBITMAP)直接绘制操作接口;
3. 自行提供绘制操作,也不容易操作CBitmap,还得先取得HBITMAP中的BITMAP结构,然后再操作。楼主这种方式,已经接近DirectUI方式。
BeginDrag DragEnter DragLeave来做。
取得里面的BITMAP结构然后呢?难道要一个字节一个字节地往里面去填数据还是干嘛?
windows提供了窗体的设备上下文(DC)供我们绘制窗体。想做什么绘制直接往上面画就可以了~
CBitmap对象被DC选入后对DC的所有绘制都会体现到这个CBitmap对象里面。
MFC提供的界面不好看,现在很多软件基本都是自绘的。关于拖拽
http://surmountyu.blog.hexun.com/23221392_d.html
里面讲得很详细
CPoint pt(0, 0);
iconList.BeginDrag ( 0, pt );
iconList.DragEnter ( /*拖拽窗体的指针*/, /*绘制的点*/);
至于什么时候可以出发开始拖拽链接里面的文章已经讲得很清楚了。BeginDrag和DragEnter楼主如果不明白可以查阅MSDN
等有空花一个周末的时间研究双缓存。