📄 图像的3d灰度显示.txt
字号:
//参数说明:nXDest、nYDest显示位图的左上角坐标
// nWidth、nHeight棗显示位图的宽与高
// hDIB棗位图句柄
// nXSrc、nXSrc棗源位图左上角坐标
void DrawGray3D (CDC *pDC, int nXDest, int nYDest, int nWidth, int nHeight, HBITMAP hDIB, int nXSrc, int nYSrc)
{
if(nWidth <= 0 || nHeight <= 0)
return;
CDC memDC ;
memDC.CreateCompatibleDC(pDC);
CDC BWDC ;
BWDC.CreateCompatibleDC(pDC);
//生成黑白位图与黑白调色板
//定义黑白位图信息头
struct {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[2];
} BWBITMAPINFO = {
{ sizeof(BITMAPINFOHEADER), nWidth, nHeight, 1, 1,
BI_RGB, 0, 0, 0, 0, 0
},
{//定义黑白颜色
{ 0x00, 0x00, 0x00, 0x00 }, { 0xFF, 0xFF, 0xFF, 0x00 }
}
};
VOID *pbitsBW;
HBITMAP hDIBBW = CreateDIBSection(BWDC.m_hDC,
(LPBITMAPINFO)&BWBITMAPINFO, DIB_RGB_COLORS, &pbitsBW, NULL, 0);
if (hDIBBW)
{
SelectObject(BWDC.m_hDC, hDIBBW);
SelectObject(memDC.m_hDC, hDIB);
//将彩色位图拷贝到黑白位图中.
BWDC.BitBlt(0, 0, nWidth, nHeight, &memDC, nXSrc, nYSrc, SRCCOPY);
//绘制衬底
FillRect(pDC->m_hDC,CRect(nXDest, nYDest, nXDest + nWidth, nYDest +nHeight), GetSysColorBrush(COLOR_3DFACE));
//使用COLOR_3DHILIGHT画刷,0xB88888光栅显示黑白位图到视.
CBrush hb1,hb2;
CBrush *oldBrush ;
hb1.CreateSolidBrush(GetSysColor(COLOR_3DHILIGHT));
oldBrush=pDC->SelectObject(&hb1);
pDC->BitBlt( nXDest + 1, nYDest + 1, nWidth, nHeight, &BWDC, 0, 0,0xB88888 );
hb2.CreateSolidBrush(GetSysColor(COLOR_3DSHADOW));
pDC->SelectObject(&hb2);
//使用COLOR_3DSHADOW画刷,0xB88888光栅显示黑白位图到视,形成3D位图.
pDC->BitBlt( nXDest, nYDest, nWidth, nHeight, &BWDC, 0, 0,0xB88888);
pDC->SelectObject(oldBrush);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -