PANDUAN PEMBELAJARAN dan PENYELSAIAN SOAL-SOAL
KOMPUTER GRAFIK
CREATE TABLE Emp ( eid INTEGER, nename CHAR(10), age INTEGER, salary REAL, PRIMARY KEY (eid) ) INSERT INTO Emp (eid, ename, age, salary) VALUES (101, ‘Gabriel Sirait’, 32, 15000) UPDATE Emp E SET E.salary = E.salary * 1.10 DELETE FROM Dept D WHERE D.dname = ’Sirait’
OLEH : IR. HASANUDDIN SIRAIT, MT
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
1 of 35
PENDAHULUAN Panduan ini akan di jelas cara menghitung dan membuat suatu grafik dengan menggunakan bahasa pemrograman Delphi 7.0. Kelebihan dari pemrograman GUI Delphi 7.0 cukup banyak fasilitas yang tersedia karena dipuruntukkan untuk logika matematik Cira Grafik.
Uraian : Memberikan pengetahuan kepada mahasiswa mengenai konsep dasar dan design Citra Grafik dalam GUI. komputer. Sasaran Bisa mendesign dan membangun suatu program Citra Grafik berbasis GUI secara Logika matematik melalui bahasa pemrograman Delphi.
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
2 of 35
Materi : - POLIGON BERATURAN - PERPUTARAN ELIPS - SEGI EMPAT SUDUT DAN ELIPS - Latihan 1. Regions Combine 2. Grafik Sinus dan Konsinus 3. Parabola 4. Spiral 5. Pola Standar 6. Spiral 7. Text Terbenam dan Timbul 8. Cermin 9. Scan ke warna Text dari Gambar 10. MenggambarText 11. Teks dengan efek Outline
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
3 of 35
1. POLIGON BERATURAN Poligon beraturan adalah suatu grafik dengan bentuk poligon dan dapat di tentukan bentuk dengan sisi sama panjang, conto bentuk segitiga, segi empat jajaran genjang, segi lima, dst. Langkah membuat adalah : a. Buat suatu form b. Klik PainBox untuk tempat gambar yang ada pada menu sistem c. Buat suatu input data contohnya SpinEdit d. Buat Button untuk mengaktifkan tampilan dan button keluar e. Sehingga tampilan seperti berikut :
f. Ketik Program berikut pada Gambar Poligon: procedure TForm1.SpeedButton1Click(Sender: TObject); var a, n, count: Integer; c: real; begin with PaintBox1.Canvas do begin Brush.Color:=clBtnFace; Rectangle(-1, -1, Width+1, Height+1); Pen.Color:=clBlack; end; {--jumlah sisi--} count:=SpinEdit1.Value; {--sudut antar sisi--} c:=2*PI/SpinEdit1.Value; R:=PaintBox1.Width div 2; CenterX:=PaintBox1.Width div 2; CenterY:=PaintBox1.Height div 2; {--titik-titik poligon--} for a:=0 to count-1 do begin P[a].x:=CenterX-Round(R*cos(a*c+PI/2));
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
4 of 35
P[a].y:=CenterY-Round(R*sin(a*c+PI/2)); end; PaintBox1.Canvas.Polygon(Slice(P, count)); end;
PENJELASAN : Procedure dari Gambar Poligon dengan nama Button : “SpeedButton1” procedure TForm1.SpeedButton1Click(Sender: TObject);
Pendefinisian variable private yang digunakan yaitu a, n, count yang bertipe Integer : var a, n, count: Integer; c: real;
Pendefinisian bahwa gambar akan diletakkan pada PaintBox dengan nama canvas “PaintBox1” begin with PaintBox1.Canvas do
Proses pada canvas PainBox, format pemberian warna adalah : Brush.Color:=clBtnFace, bentuk gambar adalah kotak formtanya pemberian instruksi adalah Rectangle(x1, y1, x2, y2, warna garis Pen.Color adalah clBlack : begin Brush.Color:=clBtnFace; Rectangle(-1, -1, Width+1, Height+1); Pen.Color:=clBlack; end;
Proses penentukan jumlah garis yang disimpan dalam variable Count dari nilai SpinEdit : {--jumlah sisi--} count:=SpinEdit1.Value;
Proses penentukan perhitungan sudut setiap sisi yang disimpan dalam variable c: {--sudut antar sisi--} c:=2*PI/SpinEdit1.Value;
Proses penentukan perhitungan pembagian 2 dari lebar dan panjang yang disimpan dalam variable CenterX & CenterY, yang didefinisikan pada public diatas: R:=PaintBox1.Width div 2; CenterX:=PaintBox1.Width div 2; CenterY:=PaintBox1.Height div 2;
Proses menarik garis dari x1,y2 ke x2,y2 dengan sejumlah titik-titik : {--titik-titik poligon--} for a:=0 to count-1 do begin P[a].x:=CenterX-Round(R*cos(a*c+PI/2)); P[a].y:=CenterY-Round(R*sin(a*c+PI/2)); end;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
5 of 35
PaintBox1.Canvas.Polygon(Slice(P, count)); end;
g. Ketik Program berikut pada Button keluar: procedure TForm1.Button1Click(Sender: TObject); begin close; end;
Listing program selengkapnya adalah : unit RegularPoligon; {---------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {---------------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, StdCtrls, Buttons, Spin, ExtCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpinEdit1: TSpinEdit; Label2: TLabel; SpeedButton1: TSpeedButton; Button1: TButton; procedure SpinEdit1Change(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; R: Integer; CenterX, CenterY: Integer; P: array[Byte] of TPoint;
Diketik
implementation {$R *.DFM} procedure TForm1.SpeedButton1Click(Sender: TObject); var a, n, count: Integer; c: real; begin
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
6 of 35
with PaintBox1.Canvas do begin Brush.Color:=clBtnFace; Rectangle(-1, -1, Width+1, Height+1); Pen.Color:=clBlack; end; {--jumlah sisi--} count:=SpinEdit1.Value; {--sudut antar sisi--} c:=2*PI/SpinEdit1.Value;
Diketik
R:=PaintBox1.Width div 2; CenterX:=PaintBox1.Width div 2; CenterY:=PaintBox1.Height div 2; {--titik-titik poligon--} for a:=0 to count-1 do begin P[a].x:=CenterX-Round(R*cos(a*c+PI/2)); P[a].y:=CenterY-Round(R*sin(a*c+PI/2)); end; PaintBox1.Canvas.Polygon(Slice(P, count)); end; procedure TForm1.SpinEdit1Change(Sender: TObject); begin with SpinEdit1 do begin if Value>MaxValue then Value:=Maxvalue; if Value<Minvalue then Value:=MinValue; end; SpeedButton1Click(Sender); end; procedure TForm1.Button1Click(Sender: TObject); begin close; end;
Diketik
Diketik
end.
Hasil Program selengkapnya adalah : 3. Gambar Poligon 5 sisi 2. Klik Button Gambar Poligon 3. Keluar 1. Tentukan jumlah sisi
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
7 of 35
2. PERPUTARAN ELIPS Elips adalah suatu gambar lingkaran dengan jari-jari kiri=kanan, atas= bawah. Langkah membuat adalah : a. Buat suatu form b. Klik PainBox untuk tempat gambar yang ada pada menu sistem c. Buat suatu display text contohnya dapat memalui GroupBox untuk menampilkan hasil rotasi d. Buat suatu input data contohnya TackBar agardapat dipindah-pindahkan e. Buat suatu Button untuk dapat mengkuli keluar
f. Ketik Program berikut pada TrackBar : procedure TForm1.TrackBar1Change(Sender: TObject); begin Angle:=TrackBar1.Position; GroupBox1.Caption:='Rotation Angle: '+IntToStr(Angle); Application.ProcessMessages; DrawRotatedEllipse; end;
Penjelasan program TrackBar Procedure untuk TrackBar1: procedure TForm1.TrackBar1Change(Sender: TObject);
Mengambil position dari TrackBar1 yang dipindahkan ke variabel Angle begin Angle:=TrackBar1.Position;
Menampilkan nilai dari Angle dan ditampilkan setelah Rotation Angle: pada GroupBox1 : GroupBox1.Caption:='Rotation Angle: '+IntToStr(Angle);
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
8 of 35
Mengaktifkan proses aplikation pesan: Application.ProcessMessages;
Membentuk perpotaran dalam bentuk DrawRotedEllipse: DrawRotatedEllipse; end;
Penjelasan program Aritmatik Proses aritmatik berada pada form, agar program langsung menjalankan program jika running ok, listingnya adalah sebagai berikut : procedure TForm1.DrawRotatedEllipse; var CenterX, CenterY: Integer; RadiusX, RadiusY: Integer; cs, sn, x, y: real; sdt: real; n: Integer; FP: array[0..360] of TPoint; begin {--clear canvas--} with PaintBox1.Canvas do begin Pen.Color:=Color; Brush.Color:=Color; Rectangle(0, 0, PaintBox1.Width, PaintBox1.Height); end; {--initialization--} RadiusX:=PaintBox1.Width div 2; RadiusY:=PaintBox1.Height div 3; CenterX:=PaintBox1.Width div 2; CenterY:=PaintBox1.Height div 2; sdt:=Angle*PI/180; cs:=cos(sdt); sn:=sin(sdt); for n:=0 to 360 do begin x:=RadiusX*cos(n*PI/180); y:=RadiusY*sin(n*PI/180); FP[n].x:=CenterX+Round(x*cs+y*sn); FP[n].y:=CenterY+Round(-sn*x+cs*y); end; PaintBox1.Canvas.Pen.Color:=clBlack; PaintBox1.Canvas.Brush.Style:=bsClear; PaintBox1.Canvas.Polygon(FP); end;
Procedure DrawRotatedElips procedure TForm1.DrawRotatedEllipse;
Pendefinisian variable : var CenterX, CenterY: Integer; RadiusX, RadiusY: Integer; cs, sn, x, y: real; sdt: real;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
9 of 35
n: Integer; FP: array[0..360] of TPoint;
Proses Menghubungkan ke PointBox1 gambar yangakan di tampilkan : begin {--clear canvas--} with PaintBox1.Canvas do begin
Pemberian warna Garis, warna gambar Pen.Color:=Color; Brush.Color:=Color;
Pembentukan suatu kotak (c1,y1,x2,y2) Rectangle(0, 0, PaintBox1.Width, PaintBox1.Height); end;
Proses perhitungan RadiusX1 yang dibagi 2 agar ditengah, RadiusY1 yang dibagi 3 agar gambar terlihat ditengah PaintBox1untuk sumbu x dan y : {--initialization--} RadiusX:=PaintBox1.Width div 2; RadiusY:=PaintBox1.Height div 3; CenterX:=PaintBox1.Width div 2; CenterY:=PaintBox1.Height div 2;
Proses perhitungan sudut Angle 8 PI (3.14)/180 yang disimpan di variable sdr, mudian mencari cosnya dan sinusnya sdt:=Angle*PI/180; cs:=cos(sdt); sn:=sin(sdt);
Proses Pencetakan garis dalam bentuk titik sampai sudut 360 : for n:=0 to 360 do begin x:=RadiusX*cos(n*PI/180); y:=RadiusY*sin(n*PI/180); FP[n].x:=CenterX+Round(x*cs+y*sn); FP[n].y:=CenterY+Round(-sn*x+cs*y); end;
Proses Pencetakan pencetakan warna canvas gambar: PaintBox1.Canvas.Pen.Color:=clBlack; PaintBox1.Canvas.Brush.Style:=bsClear; PaintBox1.Canvas.Polygon(FP);
h. Ketik Program berikut pada Button keluar: procedure TForm1.Button1Click(Sender: TObject); begin close; end;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
10 of 35
Listing program selengkapnya adalah : unit RotatedEllipse; {------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait} {-----------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Buttons, StdCtrls, Spin, ExtCtrls, ComCtrls, InvokeRegistry, WSDLIntf, SOAPPasInv, SOAPHTTPPasInv; type TForm1 = class(TForm) PaintBox1: TPaintBox; TrackBar1: TTrackBar; Label2: TLabel; GroupBox1: TGroupBox; Shape1: TShape; Button1: TButton; procedure TrackBar1Change(Sender: TObject); procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure DrawRotatedEllipse; end; var Form1: TForm1; Angle: Integer;
diketik
implementation {$R *.DFM} procedure TForm1.DrawRotatedEllipse; var CenterX, CenterY: Integer; RadiusX, RadiusY: Integer; cs, sn, x, y: real; sdt: real; n: Integer; FP: array[0..360] of TPoint; begin {--clear canvas--} with PaintBox1.Canvas do begin Pen.Color:=Color; Brush.Color:=Color; Rectangle(0, 0, PaintBox1.Width, PaintBox1.Height); end; {--initialization--} RadiusX:=PaintBox1.Width div 2; RadiusY:=PaintBox1.Height div 3; CenterX:=PaintBox1.Width div 2; CenterY:=PaintBox1.Height div 2;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
11 of 35
sdt:=Angle*PI/180; cs:=cos(sdt); sn:=sin(sdt); for n:=0 to 360 do begin x:=RadiusX*cos(n*PI/180); y:=RadiusY*sin(n*PI/180); FP[n].x:=CenterX+Round(x*cs+y*sn); FP[n].y:=CenterY+Round(-sn*x+cs*y); end; PaintBox1.Canvas.Pen.Color:=clBlack; PaintBox1.Canvas.Brush.Style:=bsClear; PaintBox1.Canvas.Polygon(FP); end; procedure TForm1.TrackBar1Change(Sender: TObject); begin Angle:=TrackBar1.Position; GroupBox1.Caption:='Rotation Angle: '+IntToStr(Angle); Application.ProcessMessages; DrawRotatedEllipse; end; procedure TForm1.FormPaint(Sender: TObject); begin TrackBar1Change(Sender); end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
diketik
diketik
diketik
diketik
Hasil Program selengkapnya adalah :
Sudut 0 derajad
Sudut 46 derajad
Dan Seterusnya dapat di putar/rotate gambarnya
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
12 of 35
3. SEGI EMPAT SUDUT DAN ELIPS Segi empat sudut dan elips adalah suatu gambar sudut persegi dan sudut elips. Langkah membuat adalah : a. Buat suatu form b. Klik PainBox untuk tempat gambar yang ada pada menu sistem c. Buat suatu button untuk Round Regt untuk menampilkan kota persegi d. Buat suatu button untuk Regtangle untuk menampilkan kotak sudut Elips. e. Buat suatu Button untuk dapat mengkuli keluar
f. Ketik program berikut pada RoundRect untuk menggambarkan sudut: procedure TForm1.SpeedButton2Click(Sender: TObject); begin with PaintBox1 do begin Canvas.Brush.Color:=clRed; Canvas.RoundRect(10, 10, 150, 150, 60, 60); end; end;
Penjelasan program Round Rect Procedure untuk SpeedButton: procedure TForm1.SpeedButton2Click(Sender: TObject);
Membuat conection ke tampilan PaintBox1 : begin with PaintBox1 do
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
13 of 35
Menampilkan membuat warna canvas Canvas.Brush.Color:=clRed, dan menarik garis sesuai dengan grafik x1,y1 ke X2,Y2 dengan format Canvas.RoundRect(x1, y1, x2, y2, lebar, tinggi): begin Canvas.Brush.Color:=clRed; Canvas.RoundRect(10, 10, 150, 150, 60, 60); end;
Penjelasan program Rectangle Procedure untuk SpeedButton: procedure TForm1.SpeedButton1Click(Sender: TObject);
Membuat conection ke tampilan PaintBox1 : with PaintBox1 do begin
Menampilkan membuat warna canvas Canvas.Brush.Color:=clInfoBK, dan menarik garis sesuai dengan grafik x1,y1 ke X2,Y2 dengan format Canvas.Rectangle(170, 10, 310, 150): Canvas.Brush.Color:=clInfoBK; Canvas.Rectangle(170, 10, 310, 150);
g. Ketik Program berikut pada Button keluar: procedure TForm1.Button1Click(Sender: TObject); begin close; end;
Listing program selengkapnya adalah : unit Rectangle; {-------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait} {-------------------------------------------------} interface uses Windows, SysUtils, Classes, Controls, Graphics, Forms, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; Shape1: TShape; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject);
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
14 of 35
procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.SpeedButton1Click(Sender: TObject); begin with PaintBox1 do begin Canvas.Brush.Color:=clInfoBK; Canvas.Rectangle(170, 10, 310, 150); end; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin with PaintBox1 do begin Canvas.Brush.Color:=clRed; Canvas.RoundRect(10, 10, 150, 150, 60, 60); end; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
Hasil Program selengkapnya adalah :
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
15 of 35
DAFTAR WARNA LINE/PEN
Latihan Buat Program yang dapat menggambarkan seperti tampilan dibawah ini : 1. Regions Combine
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
16 of 35
Listing Programnya adalah : unit Rgn_Combine; {------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {-------------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; RgnA, RgnB, RgnC: HRgn; implementation {$R *.dfm} {--COMBINE REGION--} procedure TForm1.SpeedButton1Click(Sender: TObject); begin RgnC:=CreateRectRgn(0, 0, 10, 10); {--dummy------} RgnA:=CreateRectRgn(20, 10, 160, 140); {--rectangle--} RgnB:=CreateEllipticRgn(130, 30, 300, 150); {--ellipse----} try CombineRgn(RgnC, RgnA, RgnB, RGN_OR); PaintBox1.Canvas.Brush.Color:=clInfoBK; FillRgn(PaintBox1.Canvas.Handle, RgnC, PaintBox1.Canvas.Brush.Handle); PaintBox1.Canvas.Brush.Color:=clBlack; FrameRgn(PaintBox1.Canvas.Handle, RgnC, PaintBox1.Canvas.Brush.Handle, 1, 1); finally DeleteObject(RgnA); DeleteObject(RgnB); DeleteObject(RgnC); end; end;
procedure TForm1.Button1Click(Sender: TObject);
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
17 of 35
begin close; end; end.
2. Grafik Sinus dan Cosinus
Grafik Cosinus
Grafik Sinus
Listing Programnya adalah : unit SineCurve; {-------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {--------------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Buttons, ExtCtrls, StdCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; SpeedButton2: TSpeedButton; Button1: TButton;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
18 of 35
procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.SpeedButton1Click(Sender: TObject); var y, cx, cy, a: Integer; begin with PaintBox1 do begin Canvas.Brush.Style:=bsClear; cy:=Height div 2; cx:=Width div 2; Canvas.Pen.Color:=clSilver; Canvas.MoveTo(0, cy); Canvas.LineTo(Width, cy); Canvas.MoveTo(0, 0); Canvas.LineTo(0, Height); Canvas.Pen.Color:=clBlack; end; a:=0; repeat Y:=cy-Round(cy*sin(a*PI/cx)); if a=0 then PaintBox1.Canvas.MoveTo(a, Y) else PaintBox1.Canvas.LineTo(a, Y); Inc(a); until a>PaintBox1.Width-1; end; procedure TForm1.SpeedButton2Click(Sender: TObject); var y, cx, cy, a: Integer; begin with PaintBox1 do begin Canvas.Brush.Style:=bsClear; cy:=Height div 2; cx:=Width div 2; Canvas.Pen.Color:=clSilver; Canvas.MoveTo(0, cy); Canvas.LineTo(Width, cy); Canvas.MoveTo(0, 0); Canvas.LineTo(0, Height); Canvas.Pen.Color:=clBlack; end; a:=0; repeat Y:=cy-Round(cy*cos(a*PI/cx)); if a=0 then
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
19 of 35
PaintBox1.Canvas.MoveTo(a, Y) else PaintBox1.Canvas.LineTo(a, Y); Inc(a); until a>PaintBox1.Width-1; end; end.
4. Parabola
Listing Programnya adalah : unit ParabolaCurve; {------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {------------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Buttons, ExtCtrls, StdCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm}
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
20 of 35
procedure TForm1.SpeedButton1Click(Sender: TObject); var n, y, cx: Integer; begin with PaintBox1 do begin Canvas.Brush.Style:=bsClear; cx:=Width div 2; Canvas.Pen.Color:=clSilver; Canvas.MoveTo(0, Height-1); Canvas.LineTo(Width, Height-1); Canvas.MoveTo(cx, 0); Canvas.LineTo(cx, Height); Canvas.Pen.Color:=clBlack; end; for n:=-cx to cx do begin Y:=Round(n*n/150); if n=-cx then PaintBox1.Canvas.MoveTo(cx+n, PaintBox1.Height-1-Y) else PaintBox1.Canvas.LineTo(cx+n, PaintBox1.Height-1-Y); end; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
5. Pola Standar
Listing Programnya adalah : unit Pola; {-------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {------------------------------------------------} interface uses Windows, SysUtils, Variants, Classes, Graphics, Controls, Forms, ComCtrls, Buttons, StdCtrls, ExtCtrls;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
21 of 35
type TForm1 = class(TForm) PaintBox1: TPaintBox; BtnPolaBaru: TSpeedButton; Panel1: TPanel; Panel2: TPanel; PaintBox2: TPaintBox; Panel3: TPanel; PaintBox3: TPaintBox; Panel4: TPanel; PaintBox4: TPaintBox; Panel5: TPanel; PaintBox5: TPaintBox; Panel6: TPanel; PaintBox6: TPaintBox; Panel7: TPanel; PaintBox7: TPaintBox; Panel8: TPanel; PaintBox8: TPaintBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; procedure BtnPolaBaruClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BtnPolaBaruClick(Sender: TObject); begin PaintBox1.Canvas.Brush.Style:=bsClear; PaintBox1.Canvas.Rectangle(PaintBox1.ClientRect); PaintBox2.Canvas.Brush.Color:=clBlack; PaintBox2.Canvas.Brush.Style:=bsSolid; PaintBox2.Canvas.Rectangle(PaintBox1.ClientRect); PaintBox3.Canvas.Brush.Color:=clBlack; PaintBox3.Canvas.Brush.Style:=bsCross; PaintBox3.Canvas.Rectangle(PaintBox1.ClientRect); PaintBox4.Canvas.Brush.Color:=clBlack; PaintBox4.Canvas.Brush.Style:=bsHorizontal; PaintBox4.Canvas.Rectangle(PaintBox1.ClientRect);
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
22 of 35
PaintBox5.Canvas.Brush.Color:=clBlack; PaintBox5.Canvas.Brush.Style:=bsBDiagonal; PaintBox5.Canvas.Rectangle(PaintBox1.ClientRect); PaintBox6.Canvas.Brush.Color:=clBlack; PaintBox6.Canvas.Brush.Style:=bsFDiagonal; PaintBox6.Canvas.Rectangle(PaintBox1.ClientRect); PaintBox7.Canvas.Brush.Color:=clBlack; PaintBox7.Canvas.Brush.Style:=bsDiagCross; PaintBox7.Canvas.Rectangle(PaintBox1.ClientRect); PaintBox8.Canvas.Brush.Color:=clBlack; PaintBox8.Canvas.Brush.Style:=bsVertical; PaintBox8.Canvas.Rectangle(PaintBox1.ClientRect); end; end.
6. Spiral
Listing Programnya adalah : unit Spiral; {------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {-----------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) SpeedButton1: TSpeedButton; Shape1: TShape; PaintBox1: TPaintBox; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } procedure DrawSpiral; public
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
23 of 35
{ Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.DrawSpiral; var x,y1,y2,r, c: Integer; begin c:=9; //SpinStep.Value; r:=c; y1:=PaintBox1.Height div 2; y2:=y1+r; x:=PaintBox1.Width div 2; repeat PaintBox1.Canvas.Arc(x-r, y1-r, x+r, y1+r, x, y1-r, x, y1+r); Inc(r, c); PaintBox1.Canvas.Arc(x-r, y2-r, x+r, y2+r, x, y2+r, x, y2-r); Inc(r, c); until r>=(PaintBox1.Height div 2); end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin DrawSpiral; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
7. Text Terbenam dan Timbul
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
24 of 35
Listing Programnya adalah : unit Teks_Emboss; {---------------------------------------------------} { Copyright (c) 2008 Hasanuddin SIrait } {--------------------------------------------------} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {--COMBINE REGION--} procedure TForm1.SpeedButton1Click(Sender: TObject); var X, Y: Integer; Teks: string; begin X:=10; Y:=10; Teks:='Embossed'; with PaintBox1 do begin Canvas.Font.Name:='Arial'; Canvas.Font.Size:=48; Canvas.Brush.Style:=bsClear; {--raised--} Canvas.Font.Color:=clBtnHighlight; Canvas.TextOut(X-1, Y-1, Teks); Canvas.Font.Color:=clBtnShadow; Canvas.TextOut(X+1, Y+1, Teks); Canvas.Font.Color:=clBtnFace; Canvas.TextOut(X, Y, Teks); {--lowered--} Y:=80;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
25 of 35
Canvas.Font.Color:=clBtnShadow; Canvas.TextOut(X-1, Y-1, Teks); Canvas.Font.Color:=clBtnHighlight; Canvas.TextOut(X+1, Y+1, Teks); Canvas.Font.Color:=clBtnFace; Canvas.TextOut(X, Y, Teks); end; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
8. Cermin
Listing Programnya adalah : unit Teks_Mirror; {-----------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {----------------------------------------------} interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure Button1Click(Sender: TObject);
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
26 of 35
private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {--use of pixel--} procedure TForm1.SpeedButton1Click(Sender: TObject); var x, y, h: Integer; begin with PaintBox1 do begin Canvas.Font.Name:='Arial Black'; Canvas.Font.Size:=36; Canvas.Font.Color:=clBlack; Canvas.TextOut(0, 10, 'Efek Cermin'); end; h:=PaintBox1.Height; with PaintBox1 do for y:=0 to h div 2 do for x:=0 to Width-1 do Canvas.Pixels[x, h-1-y]:=Canvas.Pixels[x, y]; end; type TRGBArray = array[0..32767] of TRGBTriple; pRGBArray = ^TRGBArray; {--use of scanline--} procedure TForm1.SpeedButton2Click(Sender: TObject); var x, y, w, h: integer; Org, Dest: pRGBArray; bmp: TBitmap; begin h:=PaintBox1.Height; w:=PaintBox1.Width; bmp:=TBitmap.Create; try bmp.Width:=w; bmp.Height:=h; bmp.PixelFormat:=pf24bit; with bmp do begin Canvas.Font.Name:='Arial Black'; Canvas.Font.Size:=36; Canvas.Font.Color:=clBlack; Canvas.TextOut(0, 10, 'Efek Cermin'); end;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
27 of 35
for y:=0 to h div 2 do begin Org := bmp.ScanLine[y]; // Dest := bmp.ScanLine[h div 2 + y]; Dest := bmp.ScanLine[h-1-y]; {**} for x:=0 to w-1 do Dest[x]:=Org[x]; // Dest[w-1-x]:=Org[x]; {** rotate +180 degrees} end; PaintBox1.Canvas.Draw(0, 0, bmp); finally bmp.Free; end; end; {--horizontal -> pixels--} procedure TForm1.SpeedButton3Click(Sender: TObject); var x, y, w: Integer; begin with PaintBox1 do begin Canvas.Font.Name:='Arial Black'; Canvas.Font.Size:=36; Canvas.Font.Color:=clBlack; Canvas.TextOut(10, 20, 'Efek'); Canvas.Font.Size:=28; Canvas.TextOut(10, 80, 'Cermin'); end; w:=PaintBox1.Width; with PaintBox1 do for y:=0 to Height-1 do for x:=0 to w div 2 do Canvas.Pixels[w-1-x, y]:=Canvas.Pixels[x, y]; end; {--horizontal -> scanline--} procedure TForm1.SpeedButton4Click(Sender: TObject); var x, y, w, h: integer; Org, Dest: pRGBArray; bmp: TBitmap; begin h:=PaintBox1.Height; w:=PaintBox1.Width; bmp:=TBitmap.Create; try bmp.Width:=w; bmp.Height:=h; bmp.PixelFormat:=pf24bit; with bmp do begin Canvas.Font.Name:='Arial Black'; Canvas.Font.Size:=36; Canvas.Font.Color:=clBlack; Canvas.TextOut(10, 20, 'Efek');
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
28 of 35
Canvas.Font.Size:=28; Canvas.TextOut(10, 80, 'Cermin'); end; for y:=0 to h -1 do begin Org := bmp.ScanLine[y]; Dest := bmp.ScanLine[y]; for x:=0 to w div 2 do Dest[w-1-x]:=Org[x]; end; PaintBox1.Canvas.Draw(0, 0, bmp); finally bmp.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
9. Scan ke warna Text dari Gambar
Listing Programnya adalah : unit Teks_Pictured; {---------------------------------} { Copyright (c) 2005 Djoko Susilo } {---------------------------------} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls, ComCtrls, jpeg; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; Image1: TImage;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
29 of 35
SpeedButton2: TSpeedButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {--PICTURED TEXT--} procedure TForm1.SpeedButton1Click(Sender: TObject); var x, y: Integer; begin with PaintBox1 do begin Canvas.Font.Name:='Arial Black'; Canvas.Font.Size:=72; Canvas.Font.Color:=clBlack; Canvas.TextOut(30, -30, 'Text'); end; with PaintBox1 do for y:=0 to Height-1 do for x:=0 to Width-1 do if Canvas.Pixels[x, y]=clBlack then Canvas.Pixels[x, y]:=Image1.Picture.Bitmap.Canvas.Pixels[x, y]; end; type TRGBArray = array[0..32767] of TRGBTriple; pRGBArray = ^TRGBArray; procedure TForm1.SpeedButton2Click(Sender: TObject); var x, y: Integer; bmp: TBitmap; P : PRGBArray; r, g, b: Byte; begin bmp:=TBitmap.Create; try bmp.Width:=320; bmp.Height:=80; bmp.PixelFormat:=pf24bit; bmp.Canvas.Font.Name:='Arial Black'; bmp.Canvas.Font.Size:=72; bmp.Canvas.Font.Color:=clBlack;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
30 of 35
bmp.Canvas.TextOut(30, -30, 'Text'); for y:=0 to bmp.Height-1 do begin P:=bmp.ScanLine[y]; for x:=0 to bmp.Width-1 do begin r:=P[x].rgbtRed; g:=P[x].rgbtGreen; b:=P[x].rgbtBlue; //if RGB(r, g, b)=ColorToRGB(clBlack) then if (r=0) and (g=0) and (b=0) then {-black-} PaintBox1.Canvas.Pixels[x, y]:=Image1.Picture.Bitmap.Canvas.Pixels[x, y]; end; end; finally bmp.Free; end; end; end.
10. MenggambarText
Listing Programnya adalah : unit TextOut; {-------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {------------------------------------------------}
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
31 of 35
interface uses Windows, SysUtils, Classes, Graphics, Controls, Forms, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; Shape1: TShape; SpeedButton3: TSpeedButton; Label1: TLabel; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm}
procedure TForm1.SpeedButton1Click(Sender: TObject); var s: string; R: TRect; Flags: word; begin Flags:=DT_SINGLELINE or DT_CENTER; //-DT_END_ELLIPSIS; s:='Teks yang diformat pada area segi-empat'; R:=Rect(20, 30, 250, 75); PaintBox1.Canvas.Rectangle(R); with PaintBox1 do begin Canvas.Font.Name:='Verdana'; Canvas.Font.Size:=11; Canvas.Brush.Style:=bsClear; // Canvas.TextOut(2,2, s); DrawText(Canvas.Handle, PChar(s), Length(s), R, Flags); Flags:=DT_WORDBREAK; R:=Rect(20, 90, 250, 135); PaintBox1.Canvas.Rectangle(R); Canvas.Brush.Style:=bsClear; DrawText(Canvas.Handle, PChar(s), Length(s), R, Flags); end; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin with PaintBox1 do
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
32 of 35
begin Canvas.Font.Name:='Verdana'; Canvas.Font.Size:=14; Canvas.TextOut(-10, -10, 'Teks dengan koordinat bebas'); Canvas.TextOut(20, 40, 'Teks dengan koordinat bebas'); Canvas.TextOut(90, 90, 'Teks dengan koordinat bebas'); Canvas.TextOut(150, Height-17, 'Teks dengan koordinat bebas'); end; end; procedure TForm1.SpeedButton3Click(Sender: TObject); var R: TRect; begin R:=Rect(38, 50, 270, 78); PaintBox1.Canvas.Rectangle(R); with PaintBox1 do begin Canvas.Font.Name:='Verdana'; Canvas.Brush.Style:=bsClear; Canvas.Font.Size:=18; // Canvas.Font.Color:=clSilver; // Canvas.TextOut(30, 18, 'Teks pada jendela'); // Canvas.TextOut(30, 58, 'Teks pada jendela'); // Canvas.TextOut(30, 88, 'Teks pada jendela'); // Canvas.Font.Color:=clBlack; Canvas.TextRect(R, 30, 58, 'Teks pada jendela'); end; end; end.
11. Teks dengan efek Outline
Listing Programnya adalah unit Teks_Outline; {-------------------------------------------------} { Copyright (c) 2008 Hasanuddin Sirait } {--------------------------------------------------} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, StdCtrls, ComCtrls;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
33 of 35
type TForm1 = class(TForm) PaintBox1: TPaintBox; SpeedButton1: TSpeedButton; Shape1: TShape; Button1: TButton; procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {--COMBINE REGION--} procedure TForm1.SpeedButton1Click(Sender: TObject); var X, Y: Integer; Teks: string; begin X:=10; Y:=20; Teks:='Outlined Text'; with PaintBox1 do begin Canvas.Font.Name:='Verdana'; Canvas.Font.Size:=32; Canvas.Brush.Style:=bsClear; {--outline--} Canvas.Font.Color:=clBlue; Canvas.TextOut(X-1, Y-1, Teks); Canvas.TextOut(X-1, Y+1, Teks); Canvas.TextOut(X+1, Y+1, Teks); Canvas.TextOut(X+1, Y-1, Teks); Canvas.Font.Color:=clInfoBK; Canvas.TextOut(X, Y, Teks); {--hollow--} Y:=70; Canvas.Font.Color:=clBlack; Canvas.TextOut(X-1, Y-1, Teks); Canvas.TextOut(X-1, Y+1, Teks); Canvas.TextOut(X+1, Y+1, Teks); Canvas.TextOut(X+1, Y-1, Teks); Canvas.Font.Color:=clBtnFace; Canvas.TextOut(X, Y, Teks); end; end;
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
34 of 35
procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.
Untuk Kalangan Sendiri/Memperbanyak atau merobah isi sebagian/seluruhnya Dianggab Plagiat, dan akan di tuntut secara Hukum Perdata
35 of 35