Hab hier eine Kalkulation für grautöne im Netz gefunden.
Calcuate grey
See Color Space FAQ at:
Delphi-Quellcode:
nSize := bm.bmWidth * bm.bmHeight;
for IntI := 0
to nSize
do
begin
// 0.212671 * R + 0.715160 * G + 0.072169 * B
iSrcR := GetDibR(ptPixels[IntI]);
iSrcG := GetDibG(ptPixels[IntI]);
iSrcB := GetDibB(ptPixels[IntI]);
iGrey := (iSrcR * 54 + iSrcG * 182 + iSrcB * 19)
shr 8;
// Take color from the gradient
Col := m_clGradient[iGrey];
ptPixels[IntI] :=
RGB(
(GetBValue(Col) * iAlpha + iSrcB * (255 - iAlpha))
shr 8,
(GetGValue(Col) * iAlpha + iSrcG * (255 - iAlpha))
shr 8,
(GetRValue(Col) * iAlpha + iSrcR * (255 - iAlpha))
shr 8 );
end;
Habe aber 2 kleine probleme was die definition von GetDib* und ptPixels angeht.
Übersetzung nach Delphi.
In C++
Code:
#define GetDibR(drgb) (((drgb) & 0x00ff0000) >> 16)
#define GetDibG(drgb) (((drgb) & 0x0000ff00) >> 8)
#define GetDibB(drgb) ((drgb) & 0x000000ff)
Wenn jemand näheres darüber weiss nur her damit
gruss