Favorite Song

Peringatan Warga Denpasar

Sudah sering terjadi bagi warga Denpasar, bahwa menjelang Hari Raya Lebaran atau Idul Fitri, banyak peristiwa pencurian dan perampokan, yang terjadinya di siang hari. Oleh karena itu, diingatkan kepada warga Denpasar untuk waspada terhadap orang-orang yang tidak dikenal namun mendekati hari raya Idul Fitri/Lebaran sering mengamati rumah anda. Saat meninggalkan rumah untuk bekerja, pastikan semua jendela dan pintu telah tertutup rapat. Hal ini perlu diwaspadai karena perampok musiman ini tidak akan merampok di malam hari, tetapi di siang hari pada saat banyak orang sibuk bekerja. Salam bahagia
Try SEO Understanding and Knowledge Sharing

Contoh Delphi:Memahami Pembuatan Grafik Garis

Oleh Putu Swastawa

Mungkin, anda seorang programer pemula, memperoleh teknik memprogram secukupnya, dan saat ini perlu memprogram grafis, misalnya untuk grafik garis perkembangan rekam medik pasien per satuan waktu tertentu. Berikut saya berikan tutorial atau panduannya untuk membuat grafik garis. Dasar ini sangat penting untuk membuat diagram lainnya dengan kode program delphi.

Perhatikan peta area grafis diagram berikut:

Peta area grafis diagram

Peta area grafis diagram

Istilah berikut harus dikenal:

  1. Area kanvas atau area kertas gambar, diberi garis batas warna hitam.
  2. Area Gambar atau area graph diberi tanda garis merah.
  3. Axis atau sumbu koordinat X diberi tanda garis ungu
  4. Ordinat atau sumbu koordinat Y diberi tanda garis biru
  5. m.leff adalah batas kiri
  6. m.top adalah batas atas
  7. m.bott adalah batas bawah
  8. m.right adalah batas kanan

Misalnya, kita menginput beberapa pasang axis,ordinat sebagai berikut:

(0,6);

(1,3);

(2,6);

(3,4);

(4,5);

(5,3);

(6,6);

(7,1);

(8,2);

Kita harus merepresentasikannya menjadi grafis di layar komputer.

Grafis di layar komputer dinyatakan dalam satuan pixel, 1 pixel = 0,24 mm. Karena terlalu pendek, maka diperlebarlah menggambarnya. Maka, dikenal dengan pen-skala-an, baik untuk posisi mendatar ( axis ) maupun berdiri ( ordinat ).

Misalkan, kita set satuan berikut:

ScaleX := 20;

ScaleY := 30;

MarginLeft := 50;

MarginTOp := 50;

MarginBottom := 50;

MarginRight := 50

Maka, batas-batas daerah area gambar:

MostLeft  := MarginLeft;

MostTop   := MarginTop;

MostRight := Im.Width – MarginRight;

MostBottom:= Im.Height – MarginBottom;

Saya mendefinisikan array:

TPoints = array of TPOint;

TPoint adalah pasangan nilai X,Y.

kemudian, ada deklarasi variabel private:

RealPoints: TPoints;

UserPoints: TPoints;

GraphPoints: TPoints;

bersama variabel private lainnya:

ScaleX: integer;

ScaleY: integer;

MarginTop: integer;

MarginRight: integer;

MarginBottom: integer;

MarginLeft: integer;

Dengan prosedur ini, saya menginput pasangan ordinat-axis asli:

procedure adu(n,x,y:integer);

var idx:integer;

begin

idx:= length(userPoints);

if n+1 > idx then

begin

SetLength(UserPoints,n+1);

end;

UserPoints[n].x :=x;

UserPOints[n].Y := y;

end;

adu(0,0,6);

adu(1,1,3);

adu(2,2,6);

adu(3,3,4);

adu(4,4,5);

adu(5,5,3);

adu(6,6,6);

adu(7,7,1);

adu(8,8,2);

Pasangan koordinat ini disesuaikan dengan skala X dan Y:

procedure adr(n,x,y:integer);

begin

RealPoints[n].x :=x;

RealPOints[n].Y := y;

end;

SetLength(RealPoints,length(UserPoints));

for i:= 0 to length(RealPoints)-1 do

begin

adr(i,UserPoints[i].X * ScaleX,ScaleY*UserPoints[i].Y);

end;

Pasangan axis ordinat ini kemudian disesuaikan dengan batas area grafis:

procedure adg(n,x,y:integer);

begin

GraphPoints[n].x :=x;

GraphPOints[n].Y := y;

end;

SetLength(GraphPoints,Length(RealPoints));

For i:= 0 to length(GraphPoints)-1 do

begin

adg(i,MostLeft+RealPoints[i].X,MostBottom – RealPoints[i].Y);

end;

Kemudian, saya menggambar grafik garisnya sebagai berikut:

Cv.MoveTo(GraphPoints[0].x,GraphPoints[0].Y);

for i:= 1 to length(GraphPoints)-1 do

begin

Cv.LineTo(GraphPoints[i].X,GraphPoints[i].Y );

Cv.MoveTo(GraphPoints[i].x,GraphPoints[i].Y);

end;

Dilengkapi dengan prosedur membuat batas area gambar dan sumbu koordinat berikut:

procedure DrawGraphAreaBorder;

begin

Cv.MoveTo(MostLeft,MostTop);

Cv.LineTo(MostRight,MostTop);

Cv.MoveTo(MostRight,MostTop);

Cv.LineTo(MostRight,MostBottom);

Cv.MoveTo(MostRight,MostBottom);

Cv.LineTo(MostLeft,MostBottom);

Cv.MoveTo(MostLeft,MostBottom);

Cv.LineTo(MostLeft,MostTop);

end;

procedure DrawAxisOrdinat(user_x,user_y:integer);

var x,y:integer;

begin

x := user_x * scaleX;

y := user_y * ScaleY;

Cv.MoveTo(MostLeft + x,MostTop);

Cv.LineTo(MostLeft + X,MostBottom);

Cv.MoveTo(MostLeft,MostBottom- Y);

Cv.LineTo(MostRight,MostBottom – Y);

end;

Dalam contoh ini, digunakan kanvas dari turunan TImage, prosedurnya adalah:

procedure TForm1.draw_line_graph(Im:TImage);

var

i:integer;

MostLeft,MostBottom,MostRight,MostTop:integer;

cv : TCanvas;

procedure adu(n,x,y:integer);

var idx:integer;

begin

idx:= length(userPoints);

if n+1 > idx then

begin

SetLength(UserPoints,n+1);

end;

UserPoints[n].x :=x;

UserPOints[n].Y := y;

end;

procedure adr(n,x,y:integer);

begin

RealPoints[n].x :=x;

RealPOints[n].Y := y;

end;

procedure adg(n,x,y:integer);

begin

GraphPoints[n].x :=x;

GraphPOints[n].Y := y;

end;

procedure DrawGraphAreaBorder;

begin

Cv.MoveTo(MostLeft,MostTop);

Cv.LineTo(MostRight,MostTop);

Cv.MoveTo(MostRight,MostTop);

Cv.LineTo(MostRight,MostBottom);

Cv.MoveTo(MostRight,MostBottom);

Cv.LineTo(MostLeft,MostBottom);

Cv.MoveTo(MostLeft,MostBottom);

Cv.LineTo(MostLeft,MostTop);

end;

procedure DrawAxisOrdinat(user_x,user_y:integer);

var x,y:integer;

begin

x := user_x * scaleX;

y := user_y * ScaleY;

Cv.MoveTo(MostLeft + x,MostTop);

Cv.LineTo(MostLeft + X,MostBottom);

Cv.MoveTo(MostLeft,MostBottom- Y);

Cv.LineTo(MostRight,MostBottom – Y);

end;

begin

Cv := Im.Canvas;

MostLeft  := MarginLeft;

MostTop   := MarginTop;

MostRight := Im.Width – MarginRight;

MostBottom:= Im.Height – MarginBottom;

adu(0,0,6);

adu(1,1,3);

adu(2,2,6);

adu(3,3,4);

adu(4,4,5);

adu(5,5,3);

adu(6,6,6);

adu(7,7,1);

adu(8,8,2);

SetLength(RealPoints,length(UserPoints));

for i:= 0 to length(RealPoints)-1 do

begin

adr(i,UserPoints[i].X * ScaleX,ScaleY*UserPoints[i].Y);

end;

SetLength(GraphPoints,Length(RealPoints));

For i:= 0 to length(GraphPoints)-1 do

begin

adg(i,MostLeft+RealPoints[i].X,MostBottom – RealPoints[i].Y);

end;

//draw margin-border

DrawGraphAreaBorder;

DrawAxisOrdinat(1,1);

Cv.MoveTo(GraphPoints[0].x,GraphPoints[0].Y);

for i:= 1 to length(GraphPoints)-1 do

begin

Cv.LineTo(GraphPoints[i].X,GraphPoints[i].Y );

Cv.MoveTo(GraphPoints[i].x,GraphPoints[i].Y);

end;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

draw_line_graph(Image1);

end;

Tombol SpeedBUtton1 adalah turunan dari TSpeedButton.

Saat ini saya menggunakan properties Image1: height = 400, width = 500

maka diperoleh diagram garis:

Hasil grafik garis delphi

Hasil grafik garis delphi

Contohnya dapat anda download di Contoh program grafik atau diagram garis.

Selamat mencoba, salam bahagia.

You must be logged in to post a comment.

ShoutBox

Last Message
7 hours, 34 minutes
 ago
  • Guest_3061 : hai
  • Guest_3061 : haaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaai
  • Master SEO Online : terima kasih atas masukan dan kehadiran anda. kami tunggu masukan lainnya
  • beruetz : salam kenal
  • Guest_291 : ga ada brita politik??
  • Guest_291 : brita yg laen mana??
  • mis online : askum,salam kenal driq
  • Made wibawa : salam kenal dari www.software-pen didikan.com
  • Master SEO Online : maaf, jam itu saya tidak online
  • Master SEO Online : pagi
  • Guest_2539 : pagi pak..
  • Master SEO Online : ya silakan mas, nanya apa?
  • Guest_3076 : mas maw nanya?
  • asmudi : siang
  • Master SEO Online : Ada ide bagus
Your Ad Here