void CmyQTab::getRgnFromRect(const CRect &rect, CRgn &rgn, int nHeightEllipse, int nWidthEllipse)
{
int nHeight = rect.bottom - rect.top; // 计算高度
int nWidth = rect.right - rect.left; // 计算宽度
POINT point2[8] = {
{rect.left, rect.top+nHeightEllipse}, // left-left-top
{rect.left+nWidthEllipse, rect.top}, // left-top-left
{rect.left+nWidth - nWidthEllipse, rect.top},
{rect.left+nWidth, rect.top+nHeightEllipse}, // right-top
{rect.left+nWidth, rect.top+nHeight - nHeightEllipse-1}, // right-bottom-right
{rect.left+nWidth - nWidthEllipse-1, rect.top+nHeight}, // right-bottom-bottom
{rect.left+nWidthEllipse+1, rect.top+nHeight}, // left-bottom
{rect.left,rect.top+ nHeight - nHeightEllipse-1}
};
rgn.CreatePolygonRgn(point2, 8, WINDING);
}
/////////////////////////////////////////////////////
void CmyQTab::DrawItem(CDC *pDC)
{
CRect rc;
GetClientRect(&rc);
CMemDC mdc(pDC,&rc);
mdc->FillRect(&rc,&CBrush(RGB(180,200,200)));
//
// CRgn rgn;
// CDC m;
// m.CreateCompatibleDC(pDC);
// CBitmap bitmap;
// bitmap.LoadBitmap(IDB_BITMAP1);
// m.SelectObject(bitmap);
// ::TransparentBlt(mdc-> GetSafeHdc(), 0, 0, 100, 100,
// m.GetSafeHdc(), 0, 0, 100, 100,
// RGB(255, 255, 255));
// b.create
CRgn rgn;
rc.left++;
rc.right--;
rc.top++;
rc.bottom--;
rc.left++;
rc.right--;
rc.top++;
rc.bottom--;
getRgnFromRect(rc,rgn,2,2);
mdc->FillRgn(&rgn,&CBrush(RGB(20,20,20)));
//mdc->FillRect(rc,&CBrush(RGB(20,20,20)));
CBrush b;
CBitmap bp;
bp.LoadBitmap(IDB_BITMAP1);
b.CreatePatternBrush(&bp);
mdc->FillRgn(&rgn,&b);
b.DeleteObject();
bp.DeleteObject();
}