2、设置方法:通电后,将要检测的目标特征正对发射光源,然后按住SET键三秒,绿灯闪烁三下即为设置成功。此为检测目标设置,即此目标被检测到时,色标传感器输出信号。
3、之后是背景色设置,让发射光源正对背景色,按住SET键1秒,红灯闪烁3秒即设置成。
4、特别说明:长按SET键15秒即可设置输出信号的常开常闭。
透明色问题,刚好我做过先跟你说下步骤:
2、将新创建的“掩码”位图存储至掩码位图的设备描述表中;
3、把位图设备描述表的背景设置成“透明色”,即不需要显示的颜色;
4、复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;
5、把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;
6、把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作;
7、最后一步重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;
8、当然最后不要忘记了把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指针,最后把新建的设备描述表也删除;
具体代码如下显示,这段代码只是截取了在WM_PAINT消息中对话框客户区画图的部分,位图的加载和删除分别写在OnInitDialog()函数和析构函数中;
CDC imgDC, maskDC//定义存储位图的位图设备描述表imgDC和存储掩码位图的掩码位图
//设备描述表maskDC
CRect rcWnd, rcPic
imgDC.CreateCompatibleDC(NULL)//初始化设备描述表
maskDC.CreateCompatibleDC(NULL)//初始化设备描述表
CBitmap bmpMask
BITMAP bm
m_bmpSample.GetBitmap(&bm)
GetClientRect(rcWnd)
rcPic.left = (rcWnd.Width() - bm.bmWidth)/2
rcPic.right = rcPic.left + bm.bmWidth
rcPic.top = (rcWnd.Height() - bm.bmHeight)/2
rcPic.bottom = rcPic.top + bm.bmHeight
bmpMask.CreateBitmap(bm.bmWidth, bm.bmHeight, 1, 1, NULL)//初始化掩码位图
CBitmap * pOldBmp = imgDC.SelectObject(&m_bmpSample)//存储位图至位图设备描述表
CBitmap * pOldMaskBmp = maskDC.SelectObject(&bmpMask)//存储掩码位图至掩码位图
//设备描述表
imgDC.SetBkColor(RGB(255, 255, 0))//设置位图设备描述表的背景色为透明色
maskDC.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &imgDC, 0, 0, SRCCOPY)
dc.BitBlt(rcPic.left, rcPic.top, bm.bmWidth, bm.bmHeight, &imgDC, 0, 0, SRCINVERT)
dc.BitBlt(rcPic.left, rcPic.top, bm.bmWidth, bm.bmHeight, &maskDC, 0, 0, SRCAND)
dc.BitBlt(rcPic.left, rcPic.top, bm.bmWidth, bm.bmHeight, &imgDC, 0, 0, SRCINVERT)
imgDC.SelectObject(pOldBmp)
maskDC.SelectObject(pOldMaskBmp)
bmpMask.DeleteObject()
pOldBmp = NULL
pOldMaskBmp = NULL
DeleteDC(imgDC)
DeleteDC(maskDC)
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)