Czy obiekt TImage posiada właściwość która powodowała by wyświetlanie obrazka w skali szarości ??
0
0
nie ma ale możesz to zrobić ręcznie http://www.efg2.com/Lab/Library/Delphi/Graphics/ImageProcessing.htm
0
napisz VCL dziedziczaca po klasie image i dodaj propertisa grayed i read i write plus obsluga odpowiednich metod ktore ta zaimplementuja
0
Przecież to wszystko jest u nas w serwisie:
http://4programmers.net/Delphi/Gotowce/ScanLine_-_kontrast,_nasycenie,_negatyw,_przyciemnienie,_rozja%C5%9Bnienie,_rozmycie,_sepia,_skala_szaro%C5%9Bci,_wykucie,wyp%C5%82owienie,_zamiana_RGB_i_inne..
Kod procedury:
Procedure GrayScale(var Bitmap:TBitmap);
var
Row:^TRGBTriple; // wskaźnik do rekordu reprezentującego składowe RGB Pixela
H,V,Index:Integer;
begin
Bitmap.PixelFormat:=pf24bit;
for V:=0 to Bitmap.Height-1 do
begin
Row:=Bitmap.ScanLine[V];
for H:=0 to Bitmap.Width -1 do
begin
Index := ((Row.rgbtRed * 77 + //77 to stała dla czerwieni
Row.rgbtGreen* 150 + //150 stała dla zielonego
Row.rgbtBlue * 29) shr 8); //29 stała dla niebieskiego
Row.rgbtBlue:=Index;
Row.rgbtGreen:=Index;
Row.rgbtRed:=Index;
inc(Row);{ Nie wolno przypisywać X:=0 lub 1,2 bo to Wskaźnk!!!
poruszamy się inc() lub dec()}
end;
end;
end;