| 发表于:2007-04-13 18:56:25 楼主 |
ondraw()中如果是这样: crect rc(0, 0, 6400, 12800); cbrush brush; brush.createsolidbrush(rgb(0,255,0)); pdc-> fillrect(&rc, &brush); 就没问题,如果用memdc,像这样: crect rc(0, 0, 6400, 12800); if (!m_pmemdc) m_pmemdc = new cmemdc(pdc, &rc); cbrush brush; brush.createsolidbrush(rgb(0,255,0)); m_pmemdc-> fillrect(&rc, &brush); pdc-> bitblt(0, 0, 200, 500, m_pmemdc, 0, 0, srccopy); 在原来应该绘制成绿色的区域,变成了一种很奇怪的花纹,不是纯色,也不是绿色,如果换成其他颜色的话,有可能变成白色,也可能变成其它的花纹,为什么?怎样解决? memdc是这样的: cmemdc(cdc *pdc, crect *prect = null, cbitmap *pbitmap = null) { assert(pdc); bool bc = createcompatibledc(pdc); if (!bc) throwexception(exception_dc); crect rect; if (prect) rect = *prect; else pdc-> getclipbox(&rect); if (pbitmap) m_poldbmp = (cbitmap*)selectobject(pbitmap); else { bc = m_bitmap.createcompatiblebitmap(this, rect.width(), rect.height()); if (!bc) throwexception(exception_dc); m_poldbmp = (cbitmap*)selectobject(&m_bitmap); } if (!m_poldbmp) throwexception(exception_dc); } |
|
|
|
|