Pada pertemuan ke2 kita membahas titik dan garis dengan menggunakan C++ builder…
Program pertama adalah garis DDA
Buat formnya seperti ini
truzzz isikan ini pada sourcenya...
#include
#pragma hdrstop
#include "Garis.h"
#pragma resource "*.dfm"
TForm1 *Form1;
int X1,X2,Y1,Y2;
int tergambar;
==============================================================
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
==============================================================
void __fastcall TForm1::DDA(int xa,int ya,int xb,int yb)
{ int dx, dy,step,k ;
float Xincrement,Yincrement,x,y;
xa=10;ya=10;xb=17;yb=16;
dx = xb-xa;
dy = yb-ya;
x=(float)xa;
y=(float)ya;
if (abs(dx)>abs(dy))
{ step = (abs(dx));}
else
{ step = (abs(dy)); };
Xincrement=(float)dx/step;
Yincrement=(float)dy/step;
Image1->Canvas->Pixels[int (x)][int (y)]=clBlack;
judul(x,y);
for (k=0;k<=step;k++)
{
x+=Xincrement;
y+=Yincrement;
Image1->Canvas->Pixels[int(x)][int(y)]=clBlack;
tampil(x,y,k);
}
}
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
==============================================================
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y)
{
tergambar=true; X1=X; Y1=Y;
}
==================================================================
void __fastcall TForm1::BtBaruClick(TObject *Sender)
{
tergambar=false;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
void __fastcall TForm1::judul(float x,float y)
{
char tampilX[20],tampilY[20];
int xt=200, yt=15, kt=2;
//Menampilkan bilangan asli tanpa pembulatan
_gcvt(x,4,tampilX);
_gcvt(y,4,tampilY);
Image1->Canvas->TextOut(xt-50, (kt-1)*yt,"k");
Image1->Canvas->TextOut(xt, (kt-1)*yt,"x");
Image1->Canvas->TextOut(xt+50, (kt-1)*yt,"y");
Image1->Canvas->TextOut(xt, kt*yt,tampilX);
Image1->Canvas->TextOut(xt+50, kt*yt,tampilY);
Image1->Canvas->TextOut(xt+100, (kt-1)*yt,"(x bulat, y bulat)");
//Menampilkan bilangan yang digunakan untuk pembulatan
_gcvt(x,2,tampilX);
_gcvt(y,2,tampilY);
//Menampilkan koordinat X dan Y
Image1->Canvas->TextOut(xt+100, kt*yt,"(");
Image1->Canvas->TextOut(xt+120, kt*yt,tampilX);
Image1->Canvas->TextOut(xt+150, kt*yt,",");
Image1->Canvas->TextOut(xt+160, kt*yt,tampilY);
Image1->Canvas->TextOut(xt+190, kt*yt,")");
}
===================================================================
void __fastcall TForm1::tampil(float x,float y,int k)
{
char tampilX[20],tampilY[20],tampilK[20];
int xt=200, yt=15;
k += 3;
//Menampilkan bilangan asli tanpa pembulatan
_gcvt(x,4,tampilX);
_gcvt(y,4,tampilY);
Image1->Canvas->TextOut(xt, k*yt,tampilX);
Image1->Canvas->TextOut(xt+50, k*yt,tampilY);
//Menampilkan bilangan yang digunakan untuk pembulatan
_gcvt(x,2,tampilX);
_gcvt(y,2,tampilY);
_gcvt(k-3,10,tampilK);
//Menampilkan koordinat X dan Y
Image1->Canvas->TextOut(xt-50, k*yt,tampilK);
Image1->Canvas->TextOut(xt+100, k*yt,"(");
Image1->Canvas->TextOut(xt+120, k*yt,tampilX);
Image1->Canvas->TextOut(xt+150, k*yt,",");
Image1->Canvas->TextOut(xt+160, k*yt,tampilY);
Image1->Canvas->TextOut(xt+190, k*yt,")");
}
void __fastcall TForm1::BtCloseClick(TObject *Sender)
{
Close();
}
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y)
{
{
BtBaruClick(Sender);
tergambar=false;
X2=X; Y2=Y;
if (RadioGroup1->ItemIndex==0)
{ DDA(X1,Y1,X2,Y2);
}
};
}
Program Kedua adalah garis Bressenham, DDA dan Line C++
buat form..
Dan tulis....
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include "Grafka2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int X1,Y1,X2,Y2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
X1=X;Y1=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DDA(int x1,int x2,int y1,int y2)
{
int step,k;
float dx,dy,Xincrement,Yincrement,xc,yc;
dx=x2-x1;dy=y2-y1;xc=x1;yc=y1;
if(abs(dx)>abs(dy))
{step=int (abs(dx));}
else
{step=int(abs(dx));}
Xincrement=dx/step;Yincrement=dy/step;
Image1->Canvas->Pixels[int (xc)][int (yc)]=clBlack;
for (k=1;k<=step;k++) { xc=xc+Xincrement; yc=yc+Yincrement; Image1->Canvas->Pixels[int(xc)][int(yc)]=clBlack;
}
}
void Bressenham(int X1,int X2,int Y2,int Y1)
{
};
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
{
X2=X;Y2=Y;
if (RadioGroup1->ItemIndex==1)
{
DDA(X1,Y1,X2,Y2);
}
else if (RadioGroup1->ItemIndex==1)
{
Bressenham(X1,Y1,X2,Y2);
}
else
{
Image1->Canvas->MoveTo(X1,Y1);
Image1->Canvas->LineTo(X2,Y2);
}
};
}
//---------------------------------------------------------------------------
dan jalankan..
segitu dulu....
0 Comments:
Posting Lebih Baru Posting Lama Beranda