📄 alphablendfunc.cpp
字号:
#include "stdafx.h"
#include "alphablendfunc.h"
extern "C" inline UINT UnoptimizedAlphablend( UINT dest, UINT source, BYTE nAlpha)
{
if( 0 == nAlpha )
return dest;
if( 255 == nAlpha )
return source;
BYTE nInvAlpha = 255-nAlpha;
BYTE nSrcRed = (source & 0xff0000) >> 16;
BYTE nSrcGreen = (source & 0xff00) >> 8;
BYTE nSrcBlue = (source & 0xff);
BYTE nDestRed = (dest & 0xff0000) >> 16;
BYTE nDestGreen = (dest & 0xff00) >> 8;
BYTE nDestBlue = (dest & 0xff);
BYTE nRed = (BYTE)(nSrcRed * (nAlpha/255.0f)) + (BYTE)(nDestRed * (nInvAlpha/255.0f));
BYTE nGreen= (BYTE)(nSrcGreen * (nAlpha/255.0f)) + (BYTE)(nDestGreen * (nInvAlpha/255.0f));
BYTE nBlue = (BYTE)(nSrcBlue * (nAlpha/255.0f)) + (BYTE)(nDestBlue * (nInvAlpha/255.0f));
return 0xff000000 | nRed << 16 | nGreen << 8 | nBlue;
}
extern "C" inline UINT OptimizedAlphablend( UINT dest, UINT source, BYTE nAlpha)
{
if( 0 == nAlpha )
return dest;
if( 255 == nAlpha )
return source;
BYTE nInvAlpha = 255-nAlpha;
BYTE nSrcRed = (source & 0xff0000) >> 16;
BYTE nSrcGreen = (source & 0xff00) >> 8;
BYTE nSrcBlue = (source & 0xff);
BYTE nDestRed = (dest & 0xff0000) >> 16;
BYTE nDestGreen = (dest & 0xff00) >> 8;
BYTE nDestBlue = (dest & 0xff);
BYTE nRed = ( nSrcRed * nAlpha + nDestRed * nInvAlpha )/255;
BYTE nGreen= ( nSrcGreen * nAlpha + nDestGreen * nInvAlpha )/255;
BYTE nBlue = ( nSrcBlue * nAlpha + nDestBlue * nInvAlpha )/255;
return 0xff000000 | nRed << 16 | nGreen << 8 | nBlue;
}
extern "C" inline UINT VeryOptimizedAlphablend( UINT dest, UINT source, BYTE nAlpha)
{
if( 0 == nAlpha )
return dest;
if( 255 == nAlpha )
return source;
BYTE nInvAlpha = 255-nAlpha;
BYTE nSrcRed = (source & 0xff0000) >> 16;
BYTE nSrcGreen = (source & 0xff00) >> 8;
BYTE nSrcBlue = (source & 0xff);
BYTE nDestRed = (dest & 0xff0000) >> 16;
BYTE nDestGreen = (dest & 0xff00) >> 8;
BYTE nDestBlue = (dest & 0xff);
BYTE nRed = ( nSrcRed * nAlpha + nDestRed * nInvAlpha )>>8;
BYTE nGreen= ( nSrcGreen * nAlpha + nDestGreen * nInvAlpha )>>8;
BYTE nBlue = ( nSrcBlue * nAlpha + nDestBlue * nInvAlpha )>>8;
return 0xff000000 | nRed << 16 | nGreen << 8 | nBlue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -