BitBlt,这个函数好像跟的参数是矩形?谁有列子给个参考下
或者帮我把下面这个多边形改下也行
CClientDC dcClient(m_hWnd);
Graphics g(dcClient.m_hDC);
g.SetSmoothingMode(SmoothingModeAntiAlias);
Color defaultclr(220,220,220);
SolidBrush defaultBrush(defaultclr); Color penClr(230,230,230);
Pen pen(penClr, 3); PointF p1(3,3);
PointF p2(3 + m_nSpace + m_nRowWidth - 4,3);
PointF p3(3 + m_nSpace + m_nRowWidth - 4,3 + m_nHeight - 4);
PointF p4(3 + m_Space - 5,3 + m_nHeight - 4);
PointF p5(3 + m_nSpace - 5,3 + m_nSpace + m_nrHeight - 4);
PointF p6(3,3 + m_Space + m_nrHeight - 4);
PointF arrPoint[] = {p1,p2,p3, p4,p5,p6}; g.FillPolygon(&defaultBrush, arrPoint, 6);
g.DrawPolygon(&pen, arrPoint, 6);

解决方案 »

  1.   

    有两种方法,第一种画在一个Bitmap bmp上面,Graphics graBmp(&bmp), 用graBmp在Bitmap上画多边形,然后Graphics graHDC(dc.m_hDC), 用graHDC将bmp画在DC上, graHDC.DrawImage(&bmp, x, x);第二种方法是画在内存DC上面,然后BitBlt到屏幕DC,HDC hdcMem, Graphics graHDC(hdcMem), 画多边形,
    BitBlt(屏幕dc, 屏幕坐标x, y, 宽, 高, hdcMem, 内存坐标x, y, SRCCOPY); 第二种方法不支持Alpha通道,如果你只想在某个地方画一个多边形,那么要用第一种