代码如下
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();
代码可以正常工作,按照给出的位图的图形划线,但是无法设置颜色,请高手赐教
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();
代码可以正常工作,按照给出的位图的图形划线,但是无法设置颜色,请高手赐教
通过
mybmp.GetBitmapBits(dwcount,(LPVOID)tempb);
//修改制定像素的颜色过程
mybmp.SetBitmapBits(dwcount,(LPVOID)tempb);
修改原始作为pattern的位图中的颜色达到变换画笔颜色的目的,我是对这个办法的效率和麻烦不满意才想请教各位改进一下的。
在解决这个问题的时候,我尝试自己通过算法模拟CPen实现的PS_GEOMETRIC效果,也能实现,但是在应用层实现这个东西是在效率太低,比如要检测点是否在线上,实现线尾部是方还是园等。