Ocena użytkownikóww: ***** / 5
Nadesłany przez Dariusz Rorat, 09 sierpnia 2010 22:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Sepia - Builder/Unit1.cpp:
//Sepia
//Dariusz Rorat
//www.algorytm.org
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
long color1,color2;
BYTE r,g,b,rr,gg;
int h,w;
int depth;
depth=CSpinEdit1->Value;
for (h = 0 ; h< Image1->Height;h++)
{
for (w = 0 ; w < Image1->Width-1; w++)
{
//konwersja na odcienie szarosci
color1=ColorToRGB(Image1->Canvas->Pixels[w][h]);
r=GetRValue(color1);
g=GetGValue(color1);
b=GetBValue(color1);
color2=(r+g+b) / 3;
color2=RGB(color2,color2,color2);
//konwersja do sepii
if (RadioGroup1->ItemIndex==1) //itemindex=1 - sepia
{
color1=color2;
r=GetRValue(color1);
g=GetGValue(color1);
b=GetBValue(color1);
rr=r+(depth*2);
gg=g+depth;
if (rr <= ((depth*2)-1))
rr=255;
if (gg <= (depth-1))
gg=255;
color2=RGB(rr,gg,b);
}
Image2->Canvas->Pixels[w][h]=(TColor) color2;
}
}
}
//---------------------------------------------------------------------------