Ocena użytkownikóww: ***** / 1
Nadesłany przez Dariusz Rorat, 02 sierpnia 2010 10: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.
Solaryzacja - Builder/Unit1.cpp:
//Solaryzacja
//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;
double LUT[256];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
Image1->Picture->LoadFromFile(OpenDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, j, r, g, b;
TColor col;
int luminance;
luminance=CSpinEdit1->Value;
for (i=0 ; i<luminance;i++) LUT[i]=i; //solaryzacja
for (i=luminance ; i<=255;i++) LUT[i]=255-i;
for (j = 0 ; j<Image1->Height; j++)
for (i = 0 ; i<Image1->Width; i++)
{
col = Image1->Canvas->Pixels[i][j];
r = GetRValue(col);
g = GetGValue(col);
b = GetBValue(col);
//zmien wartosc wedlug tablicy LUT
col = (TColor)(LUT[r]) +
((TColor)(LUT[g]) << 8) +
((TColor)(LUT[b]) << 16);
Image2->Canvas->Pixels[i][j] = col;
}
}
//---------------------------------------------------------------------------