15,979
社区成员
发帖
与我相关
我的任务
分享
void CCoolListCtrl::OnPaint()
{
// device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CListCtrl::OnPaint()
CPaintDC dc(this);
if(m_IsLoadImage)
{
BOOL bFocused = (GetFocus()==this);
CRect rectIcon(0,0,0,0);
CRect rectLabel(0,0,0,0);
CRect rectItem(0,0,0,0);
//建立背景画刷
CBrush brush;
CBitmap hBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
hBitmap.CreateCompatibleBitmap(&dc,GridSize*2,GridSize*2);
CBitmap *pOldBit=MemDC.SelectObject(&hBitmap);
MemDC.FillSolidRect(0,0,GridSize*2,GridSize*2,RGB(255,255,255));
MemDC.FillSolidRect(0,0,GridSize,GridSize,RGB(236,233,200)); //236,233,216
MemDC.FillSolidRect(GridSize,GridSize,GridSize,GridSize,RGB(236,233,200));
brush.CreatePatternBrush(&hBitmap);
for(int i=0; i<GetItemCount(); ++i)
{
CPoint pt;
//GetItemPosition(i,&pt);
//画外框
GetItemRect(i, &rectItem, LVIR_BOUNDS);
CPen pen, *pOldPen;
pen.CreatePen(PS_SOLID,0,RGB(241,239,0)); //226
pOldPen=dc.SelectObject(&pen);
dc.Rectangle(rectItem);
dc.SelectObject(pOldPen);
//画底图
dc.SelectObject(&brush);
GetItemRect(i,&rectIcon,LVIR_ICON);
rectIcon.DeflateRect(50,0,50,0);
dc.FillRect(rectIcon,&brush);
//dc.StretchBlt(rectIcon.left,rectIcon.top,rectIcon.Width(),rectIcon.Height(),&MemDC,0,0,20,20,SRCCOPY);
//dc.FillSolidRect(rectIcon,RGB(237,235,219));
//画缩略图
LVITEM lvItem = {0};
lvItem.iItem = i;
lvItem.mask = LVIF_IMAGE|LVIF_PARAM|LVIF_STATE;
GetItem(&lvItem);
GetItemRect(i,&rectIcon,LVIR_ICON);
m_ImageListThumb.Draw(&dc, lvItem.iImage, CPoint(rectIcon.left+5,rectIcon.top), ILD_TRANSPARENT);
}
MemDC.DeleteDC();
hBitmap.DeleteObject();
}
}