안녕하셔요 ?
또 무념입니다.
아래 그레이스케일 하는데서 빠진게 있군요.
화면이 좀 붉게 할 경우에는 아래와 같이 코드를 고쳐주면 됩니다.
Pixels[i,j]:=RGB(TempColor,TempColor*2 div 3,TempColor*2 div 3);
R 값을 그대로 두고 G 와 B 를 좀 줄여주면 좀 더 붉고 어두워지는 효과가
나오죠.
(어... 자꾸 엔터가 들어가네...)
글구, 그 비율을 적당히 조절하면 원하시는 갈색톤을 얻을 수 있겠군요...
아니면 특정한 갈색톤을 하나 정하셔서
그에 해당하는 R,G,B 값을 각각 갖고 있다가...
그레이로 만드는 대신 그 색깔과 평균을 낸다든지 하는
그런 방법을 쓸 수도 있겠군요...
그때에는 이런 코드가 되겠네요...
Pixels[i,j]:=RGB(TempColor+GetRValue(clMaroon)div 2,
TempColor+GetGValue(clMaroon)div 2,
TempColor+GetBValue(clMaroon)div 2);
근데 이렇게 해 보시면 그림이 좀 이상하다는걸 느끼실 겁니다.
전체적으로 한가지 색도로 나타나질 않으니깐...
음... 아무래도 처음 방법을 쓰는것이 젤루 좋을 것 같네요...
마지막으로 하나만 더...
우선 이런 변수를 만들고...
PR,PG,PB: Byte;
글구 나서 각 변수에 이런 값을 넣고...
PR:=GetRValue(clMaroon);
PG:=GetGValue(clMaroon);
PB:=GetBValue(clMaroon);
글구 아까 그 코드를 아래와 같이 변경시킵니다.
Pixels[i,j]:=RGB(TempColor*PR div $FF,
TempColor*PG div $FF,
TempColor*PB div $FF);
그럼 전체적으로 많이 어둡긴 하지만 갈색톤이 될 겁니다.
음... PB 값을 적당히 조절하심
연한 갈색톤이랑 진한 갈색톤 등을 얻을 수 있을겁니다...
그럼...
지금까지 무념였습니다.
|