📄 embossfilter.cpp
字号:
/////////////////////////////////////////////////////////////////////////////////
//
// EmbossFilter.cpp: implementation of the CEmbossFilter class.
//
////////////////////////////////////////////////////////////////////////////////
// 版权所有(2002)
// Copyright(2002)
// 编写者: 向世明
// Author: Xiang Shiming
#include "stdafx.h"
#include "EmbossFilter.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC(CEmbossFilter, CConvolutionFilter)
CEmbossFilter::CEmbossFilter()
{
m_byRed = m_byGreen = m_byBlue = 128;
}
CEmbossFilter::~CEmbossFilter()
{
CConvolutionFilter::~CConvolutionFilter();
}
#ifdef _DEBUG
void CEmbossFilter::Dump(CDumpContext& dc) const
{
CConvolutionFilter::Dump(dc);
}
void CEmbossFilter::AssertValid() const
{
CConvolutionFilter::AssertValid();
}
#endif
void CEmbossFilter::SetEmbossColor(BYTE byRed, BYTE byGreen, BYTE byBlue)
{
m_byRed = byRed;
m_byGreen = byGreen;
m_byBlue = byBlue;
}
BOOL CEmbossFilter::Emboss(LPBYTE lpbyBits32, int x, int y, int nWidth, int nHeight, int nScanWidth, int nScanHeight)
{
//进行卷积操作:
return Filter(lpbyBits32, x, y, nWidth, nHeight, nScanWidth, nScanHeight);
}
PIXELCOLORRGB CEmbossFilter::Convolute(BYTE *pbyRed, BYTE *pbyGreen, BYTE *pbyBlue, int nNum)
{
int i, nSumRed, nSumGreen, nSumBlue;
nSumRed = nSumGreen = nSumBlue = 0;
for(i = 0 ; i < nNum;i++)
{
nSumRed += pbyRed[i] * m_pnKernel[i];
nSumGreen += pbyGreen[i] * m_pnKernel[i];
nSumBlue += pbyBlue[i] * m_pnKernel[i];
}
if((m_nKernelWeight != 0) && (m_nKernelWeight != 1))
{
nSumRed /= m_nKernelWeight;
nSumGreen /= m_nKernelWeight;
nSumBlue /= m_nKernelWeight;
}
nSumRed += m_byRed;
nSumGreen += m_byGreen;
nSumBlue += m_byBlue;
PIXELCOLORRGB rgb;
rgb.red = (BYTE)(BOUND(nSumRed, 0, 255));
rgb.green = (BYTE)(BOUND(nSumGreen, 0, 255));
rgb.blue = (BYTE)(BOUND(nSumBlue, 0, 255));
return rgb;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -