You are on page 1of 12

TUGAS KOMPUTER GRAFIK

CHART 1

KOMPUTER GRAFIK 1

Oleh :

NIM NAMA
1. 181011401397 Muhammad Ridhan Maulana.N

GANJIL

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK UNIVERSITAS PAMULANG
TANGERANG SELATAN
2021
a. 1.

Source Code : ColumnChart

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.geom.*;

import javax.swing.*;

public class ColumnChart extends JPanel{

public ColumnChart() {

this.setPreferredSize(new Dimension(629, 400));

this.setBackground(Color.WHITE);

protected void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2 = (Graphics2D) g;

GeneralPath gp = new GeneralPath(GeneralPath.WIND_NON_ZERO);

gp.moveTo(30,50); //menambahkan garis dibelakang

gp.moveTo(38,90);

gp.lineTo(38,295);

gp.moveTo(30,290);

gp.lineTo(500,290);

gp.moveTo(30,90);

gp.lineTo(500,90);

gp.moveTo(30,130);
gp.lineTo(500,130);

gp.moveTo(30,170);

gp.lineTo(500,170);

gp.moveTo(30,210);

gp.lineTo(500,210);

gp.moveTo(30,250);

gp.lineTo(500,250);

gp.moveTo(497,90);

gp.lineTo(497,290);

gp.closePath(); //menutup kurva

g2.draw(gp);

g2.drawString("2500",7,90);

//g2.drawString("2500",7,90);

g2.drawString("2000",7,130);

//g2.drawString("2000",7,130);

g2.drawString("1500",7,170);

//g2.drawString("1500",7,170);

g2.drawString("1000",7,210);

//g2.drawString(“1000",7,210);

g2.drawString("500",13,250);

//g2.drawString("500",13,250);

g2.drawString("0",20,290);

g2.drawString("Teknik Informatika",40,310); //menambahkan label

g2.drawString("Teknik Industri",155,310);

g2.drawString("Teknik Mesin",248,310);

g2.drawString("Teknik Kimia",339,310);

g2.drawString("Sastra Inggris",430,310);

g2.drawString("Tahun 2014",533,190);

Shape kotak1 = new Rectangle2D.Double(75,130,30,160); //2500 membuat kotak

Shape kotak2 = new Rectangle2D.Double(180,223,30,69); //2000


Shape kotak3 = new Rectangle2D.Double(268,273,30,18); //1500

Shape kotak4 = new Rectangle2D.Double(360,230,30,60); //1000

Shape kotak5 = new Rectangle2D.Double(454,283,30,8); //500

Shape series1 = new Rectangle2D.Double(520,180,10,10);

g2.setColor(Color.BLUE);

g2.fill(kotak1);

g2.fill(kotak2);

g2.fill(kotak3);

g2.fill(kotak4);

g2.fill(kotak5);

g2.fill(series1);

public static void main(String args[]) {

// TODO code Menandakan logic here

//Buat frame dengan title sesuai kebutuhan

JFrame frame = new JFrame ("Column Chart");

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

System.exit(0);

});

//tambahkan objek dari ColumnChart

ColumnChart canvas = new ColumnChart();

frame.getContentPane().add(canvas);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}
a. 3.
Source Code : DoughnutChart
package ColumnChart;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.geom.*;

import javax.swing.*;

public class DoughnutChart extends JPanel {

// Definisikan field untuk menyimpan data

String [] label = {"Teknik Informatika", "Teknik Industri", "Teknik Mesin", "Teknik Kimia",
"Sastra Inggris"};

int [] data = {305, 108, 49, 100, 25};

Color [] warna = {Color.BLUE, Color.RED, Color.YELLOW, Color.GREEN, Color.GRAY;

//Constructor

public DoughnutChart() {

this.setPreferredSize (new Dimension(400,200));

this.setBackground(Color.WHITE);

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;

//Gunakan antialias, agar hasil bagus


g2.setRenderingHint (RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);

//Hitung total

float total = 0.0f;

for(int k = 0; k < data.length; k++)

total += data[k];

//Menghitung sudut/prosentase tiap-tiap sektor

float sudut, awal = 90; //Sudut Donat

float lx = 220, ly = 70, lw = 10, lh = 10; //Wijaba

for(int k = 0; k < data.length; k++){

//Hitung besarnya sudut tiap-tiap sektor

sudut = 360.0f * data[k] / total;

Shape sektor = new Arc2D.Float(30, 30, 150, 150, awal, sudut, Arc2D.PIE);

//Tampilkan (Render) PIE

g2.setColor(warna[k]);

g2.fill(sektor);

awal += sudut;

//Tampilkan WIJABA di sebelah kanan

g2.fill(new Rectangle2D.Float(lx, ly, lw, lh));

g2.setColor(java.awt.Color.BLACK);

g2.drawString(label[k], lx+lw+5, ly+lh);

ly += (lh+5);

//

g2.setColor(Color.white);

g2.fillOval(80, 80, 50, 50); //lingkaran penuh

}
public static void main(String args[]) {

// TODO code Nandaka logic here

//Buat frame dengan title sesuai kebutuhan

JFrame frame = new JFrame ("Doughnut Chart");

frame.setSize(650,350);

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

System.exit(0);

});

//tambahkan objek dari PieChart

DoughnutChart canvas = new DoughnutChart();

frame.getContentPane().add(canvas);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}
b. 1.
• protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
GeneralPath gp = new GeneralPath(GeneralPath.WIND_NON_ZERO);
• gp.moveTo(30,50); - //Adalah menambahkan garis dibelakang

• gp.moveTo(38,90); - //Adalah pembuatan sebuah garis


• g2.setColor(Color.BLUE);

g2.fill(kotak1);

• gp.closePath(); - //adalah menutup kurva

g2.draw(gp);

• g2.drawString("2500",7,90); - //g2.drawString("2500",7,90); adalah input sebuah


nominal atau data yg di peroleh
• g2.drawString("Teknik Informatika",40,310); - //adalah untuk menambahkan
label
• Shape kotak1 = new Rectangle2D.Double(75,130,30,160); - //2500 membuat
kotak data grafik batang

g2.setColor(Color.BLUE);

• g2.fill(kotak1); - //untuk menambah bagian data grafik batang

public static void main(String args[]) {

• // TODO code Menandakan logic here


• //Buat frame dengan title sesuai kebutuhan

JFrame frame = new JFrame ("Column Chart");

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

• //tambahkan objek dari ColumnChart

ColumnChart canvas = new ColumnChart();

frame.getContentPane().add(canvas);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);
b. 3.
• // Definisikan field untuk menyimpan data

String [] label = {"Teknik Informatika", "Teknik Industri", "Teknik Mesin", "Teknik Kimia",
"Sastra Inggris"};

int [] data = {305, 108, 49, 100, 25};

Color [] warna = {Color.BLUE, Color.RED, Color.YELLOW, Color.GREEN, Color.GRAY;

• //Constructor

public DoughnutChart() {

this.setPreferredSize (new Dimension(400,200));

this.setBackground(Color.WHITE);

• //Gunakan antialias, agar hasil bagus

g2.setRenderingHint (RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);

• //Menghitung total

float total = 0.0f;

for(int k = 0; k < data.length; k++)

total += data[k];

• //Menghitung sudut/prosentase tiap-tiap sektor


• float sudut, awal = 90; - //Sudut Donat
• float lx = 220, ly = 70, lw = 10, lh = 10; - //Wijaba

for(int k = 0; k < data.length; k++){

• //Hitung besarnya sudut tiap-tiap sektor

sudut = 360.0f * data[k] / total;

Shape sektor = new Arc2D.Float(30, 30, 150, 150, awal, sudut, Arc2D.PIE);

• //Tampilkan (Render) PIE

g2.setColor(warna[k]);

g2.fill(sektor);

awal += sudut;

• //Tampilkan WIJABA di sebelah kanan

g2.fill(new Rectangle2D.Float(lx, ly, lw, lh));

g2.setColor(java.awt.Color.BLACK);
• //Bagian sebuah Grafik Lingkaran

g2.setColor(Color.white);

g2.fillOval(80, 80, 50, 50); //lingkaran penuh

public static void main(String args[]) {

• // TODO code Nandaka logic here


• //Buat frame dengan title sesuai kebutuhan

JFrame frame = new JFrame ("Doughnut Chart");

frame.setSize(650,350);

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e)

• //tambahkan objek dari PieChart

DoughnutChart canvas = new DoughnutChart();

frame.getContentPane().add(canvas);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);
c. 1.

c. 3.
d. 1.
Pendapat saya tentang tugas ini No.1 lebih sulit di bandingkan pertemuan
sebelumnya karena tidak di perbolehkan menggunakan library JfreeChar dan
mengharuskan menggunakan geometri primitive karen di setiap geometri itu
selalu mencocokan sebuah titik dan geometri itu sendiri terlebih di tugas NIM
ganjil saya ini menggunakan grafik batang

d. 3.
Pendapat saya tentang tugas yg No.3 ini lebih mudah ke timbang bagian No.1
karena walaupun geometri lingkaran nya tersebut harus presisi di karenakan
untuk membuat lingkaran sebuah donat

You might also like