1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Graphics::TBitmap *Srce;
Graphics::TBitmap *Dest ;
Srce = Image2->Picture->Bitmap;
Dest = Image2->Picture->Bitmap;
int we = Srce->Width-1;
int he = Srce->Height;
int r;
int g;
int b;
jRgb *P = (jRgb*)Srce->ScanLine[0];
jRgb *L = (jRgb*)Srce->ScanLine[1];
jRgb *N;
jRgb *T;
for(int y = 1; y < he; y++)
{
N = (jRgb*)Srce->ScanLine[y];
T = (jRgb*)Dest->ScanLine[y-1];
for(int x = 1; x < we; x++)
{
b = ( P[x-1].Blue + P[x].Blue + P[x+1].Blue +
L[x-1].Blue + L[x].Blue + L[x+1].Blue +
N[x-1].Blue + N[x].Blue + N[x+1].Blue) / 9;
g = ( P[x-1].Green + P[x].Green + P[x+1].Green +
L[x-1].Green + L[x].Green + L[x+1].Green +
N[x-1].Green + N[x].Green + N[x+1].Green) /9;
r = ( P[x-1].Red + P[x].Red + P[x+1].Red +
L[x-1].Red + L[x].Red + L[x+1].Red +
N[x-1].Red + N[x].Red + N[x+1].Red) / 9;
// Sortie vers le bitmap 24 bits
T[x].Blue = (Byte)b;
T[x].Green = (Byte)g;
T[x].Red = (Byte)r;
}
P = L;
L = N;
}
Image2->Repaint(); |
Partager