LIGHTING
Dalam proses rendering , lighting dipengaruhi oleh factor-faktor sebagai berikut :
- jarak objek dengan sumber cahaya,
- posisi objek,
- bentuk permukaan objek
MODEL BAYANGAN
WARNA
Terdapat empat dasar pendekatan pada proses pewarnaan untuk mengisi area atau sering dikenal dengan istilah fill area,yaitu : metode scanline, metode boundary fill dan metode flood fill.
INTERFACE :
SOURCE CODE :
//---------------------------------------------------------------------------
#include
#pragma hdrstop // library yang sudah disediakan oleh Borland C++ Builder
#include "Unit1.h" // membaca file Unit1.h
//---------------------------------------------------------------------------
#pragma package(smart_init) // library yang sudah disediakan oleh Borland C++ Builder
#pragma resource "*.dfm" // library yang sudah disediakan oleh Borland C++ Builder
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
// memanggil fungsi TForm1
//------------------------------------------------------- PROGRAM STARTS HERE
Graphics::TBitmap* pix = new Graphics::TBitmap();
//komponen bitmap pada Borland untuk membuat objek baru
RGBTRIPLE* t;
int cycle = 0; à deklarasi cycle yang bertipe integer
int step;
bool stop = false;
//---------------------------------------------------- RENDER BITMAP FUNCTION
void renderBMP(Graphics::TBitmap* picture)
{
Form1->Canvas->Draw(0, 0, pix);
}
// memanggil fungsi renderBMP yaitu untuk menggambar dgn komponen canvas di form 1
//--------------------------------------------------- ALTER BITMAP FUNCTION
void bmpAlter(Graphics::TBitmap* picture)
{
stop = false;
// JIKA STOP BELUM DITEKAN MAKA BUTTON4 YAITU CANPTION STOP TIDAK ADA. SEHINGGA SAAT DIRENDER JIKA STOP MASIH BERNILAI STOP MAKA WARNA MASIH DIBACA SECARA BERULANG-ULANG
Form1->Button4->Caption = "Stop";
while (!stop)
{
for (step = 0; step <>
{
if (stop) break;
for (int y = 0; y <>Height; y++)
{
t = (RGBTRIPLE*)picture->ScanLine[y]; // MENDETEKSI GARIS-GARIS PADA GAMBAR
for (int x = 0; x <>Width; x++)
{
t->rgbtRed++;
t->rgbtGreen--;
t->rgbtBlue++;
t++;
}
}
Form1->Canvas->Draw(0, 0, pix);
cycle++;
if (cycle > 255) cycle = cycle -256;
Form1->Edit1->Text = cycle;
Application->ProcessMessages();
}
}
}
//-----------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenPictureDialog1->Execute() )
pix->LoadFromFile(OpenPictureDialog1->FileName);
} à memanggil OpenPictureDialog1
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
renderBMP(pix);
} à buuton 2 memanggil renderBMP
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
bmpAlter(pix);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
stop = !stop;
if (stop) {
Button4->Caption = "Start";
}
else {
Button4->Caption = "Stop";
bmpAlter(pix);
}
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
cycle = 0;
Form1->Edit1->Text = cycle;
}
// memanggil fungsi Edit1Change untuk mengubah objek cycle pada Form1
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete pix;
}
//memanggil fungsi FormClose untuk menghapus pix atau melakukan TCloseAction &Action
OUTPUT :
Tidak ada komentar:
Posting Komentar