代码如下   
             CBitmap mybmp;
mybmp.LoadBitmap(IDB_BITMAP2);
HBITMAP hBmp = HBITMAP(mybmp);
LOGBRUSH lb;
::ZeroMemory(&lb,sizeof(lb));
lb.lbStyle = BS_PATTERN ;
lb.lbColor = m_PenBrushColor;
lb.lbHatch = (LONG)(hBmp); 
pen.CreatePen(PS_GEOMETRIC,5,&lb); 
pOldPen = pDC->SelectObject(&pen);
pDC->MoveTo(m_PenStartPoint);
pDC->LineTo(m_PenEndPoint);
pDC->SelectObject(pOldPen); 
pen.DeleteObject();
代码可以正常工作,按照给出的位图的图形划线,但是无法设置颜色,请高手赐教

解决方案 »

  1.   

    晕死,如果更改m_PenBrushColory就可以了我就不会发这个贴了
      

  2.   

    lb.lbStyle = BS_PATTERN 时,lb.lbColor这个属性是被忽略的,所以设置没有用,我还是说下我目前找到的方法吧:
    通过  
    mybmp.GetBitmapBits(dwcount,(LPVOID)tempb);
    //修改制定像素的颜色过程
    mybmp.SetBitmapBits(dwcount,(LPVOID)tempb);
    修改原始作为pattern的位图中的颜色达到变换画笔颜色的目的,我是对这个办法的效率和麻烦不满意才想请教各位改进一下的。
    在解决这个问题的时候,我尝试自己通过算法模拟CPen实现的PS_GEOMETRIC效果,也能实现,但是在应用层实现这个东西是在效率太低,比如要检测点是否在线上,实现线尾部是方还是园等。
      

  3.   

    CreateMappedBitmap可以修改原来位图的色彩,不知是不是楼主你想要的?