Sprawozdanie Java Lab3 Karol Leszczyński gr13

background image

Karol Leszczyński gr.13 WIMIR

Sprawozdanie Lab3 Java

Opis:

Pierwsze przyciski pozwalają wybrać narzędzie

Brush – rysuje dowolny kształt

Eraser – rysuje dowolny kształt. Jedyny możliwy kolor to biały.

Line – rysuje prostą linię.

Rectangle – rysuje prostokąt

Rounded Rectangle – rysuje zaokrąglony prostokąt

Ellipse – rysuje elipsę

Polygon – rysuje wielobok

Bucket – wypełnia powierzchnię wybranym kolorem.

Text – rysuje wpisany tekst

Następne przyciski pozwalają wybrać rozmiar rysowanych kształtów w Brush i
Eraser, rozmiar czcionki w Text, a w pozostałych przypadkach grubość linii. Wyjątek
stanowi Bucket dla którego rozmiar nie ma znaczenia.

Kolejne przyciski odpowiedzalne są za to czy rysowana figura(Rectangle, Rounded
Rectangle, Ellipse i Polygon) będzie tylko obramowana(Outline) czy w całości
wypełniona(Solid).

Ostatnie przyciski pozwalają wybrać kolor rysowanych kształtów(nie dotyczy
Eraser).

Screenshot:

background image

Kod:

import

java.awt.BasicStroke;

import

java.awt.Button;

import

java.awt.Color;

import

java.awt.Cursor;

import

java.awt.FlowLayout;

import

java.awt.Font;

import

java.awt.Graphics;

import

java.awt.Graphics2D;

import

java.awt.Label;

import

java.awt.Point;

import

java.awt.event.ActionEvent;

import

java.awt.event.ActionListener;

import

java.awt.event.KeyEvent;

import

java.awt.event.KeyListener;

import

java.awt.event.MouseEvent;

import

java.awt.event.MouseListener;

import

java.awt.event.MouseMotionListener;

import

java.awt.image.BufferedImage;

import

javax.swing.JApplet;

public

class

applet

extends

JApplet

implements

MouseListener, MouseMotionListener,

ActionListener, KeyListener{

private

boolean

mousePressed

,

fill

,

drawText

;

//deklaracje zmiennych

private

int

width

,

height

,

button

,

brushSize

,

mx

,

my

,

mx2

,

my2

,

mx3

,

my3

,

fontSize

,

points

;

private

int

[]

xpoly

,

ypoly

;

private

String

text

;

private

Button

buttonClear

,

buttonBrush

,

buttonEraser

,

buttonLine

,

buttonRect

,

buttonRRect

,

buttonOval

,

buttonPoly

,

buttonFill

,

buttonText

,

buttonOutline

,

buttonSolid

;

private

Button[]

buttonSize

,

buttonColor

;

private

Label

label1

,

label2

,

label3

,

labelC

,

labelFill

;

private

BufferedImage

backbuffer

;

private

Graphics2D

backg

;

private

Color

c

;

@Override

public

void

init() {

//

TODO

Auto-generated method stub

super

.init();

//wywołanie konstruktora superklasy

this

.setSize(1280, 720);

//początkowy rozmiar okna

this

.setCursor(

new

Cursor(Cursor.

CROSSHAIR_CURSOR

));

//ustawienie

kursora

width

= 1920;

//przypisanie domyślnych wartości zmiennym i stworzenie

obiektów

height

= 1080;

button

= 1;

brushSize

= 1;

fontSize

= 12;

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

fill

=

false

;

mousePressed

=

false

;

drawText

=

false

;

text

=

""

;

c

= Color.

black

;

buttonClear

=

new

Button(

"Clear"

);

background image

buttonBrush

=

new

Button(

"Brush"

);

buttonEraser

=

new

Button(

"Eraser"

);

buttonLine

=

new

Button(

"Line"

);

buttonRect

=

new

Button(

"Rectangle"

);

buttonRRect

=

new

Button(

"Rounded Rectangle"

);

buttonOval

=

new

Button(

"Ellipse"

);

buttonPoly

=

new

Button(

"Polygon"

);

buttonFill

=

new

Button(

"Bucket"

);

buttonText

=

new

Button(

"Text"

);

buttonOutline

=

new

Button(

"Outline"

);

buttonSolid

=

new

Button(

"Solid"

);

buttonSize

=

new

Button[5];

buttonColor

=

new

Button[13];

label1

=

new

Label(

"Selected tool: Brush"

);

label2

=

new

Label(

"Selected size: 1"

);

label3

=

new

Label(

"Selected color:"

);

labelC

=

new

Label(

""

);

labelFill

=

new

Label(

"Selected shape fill: Outline"

);

this

.addMouseListener(

this

);

//dodanie przechwytywania zdarzeń

this

.addMouseMotionListener(

this

);

this

.addKeyListener(

this

);

this

.setFocusable(

true

);

//zezwolenie appletowi na zdobycie focusu

this

.setBackground( Color.

white

);

//ustawienie koloru tła

this

.setLayout(

new

FlowLayout(FlowLayout.

LEFT

));

//ustawienie rozkładu

elementów

this

.add(

buttonClear

);

//dodanie obiektów do appletu

this

.add(

buttonBrush

);

this

.add(

buttonEraser

);

this

.add(

buttonLine

);

this

.add(

buttonRect

);

this

.add(

buttonRRect

);

this

.add(

buttonOval

);

this

.add(

buttonPoly

);

this

.add(

buttonFill

);

this

.add(

buttonText

);

this

.add(

label1

);

for

(

int

i=0;i<5;i++)

{

buttonSize

[i] =

new

Button(Integer.toString(i+1));

this

.add(

buttonSize

[i]);

buttonSize

[i].addActionListener(

this

);

buttonSize

[i].addKeyListener(

this

);

}

this

.add(

label2

);

this

.add(

buttonOutline

);

this

.add(

buttonSolid

);

this

.add(

labelFill

);

for

(

int

i=0;i<13;i++)

{

buttonColor

[i] =

new

Button();

this

.add(

buttonColor

[i]);

buttonColor

[i].addActionListener(

this

);

buttonColor

[i].addKeyListener(

this

);

}

this

.add(

label3

);

this

.add(

labelC

);

label1

.setBackground(Color.

white

);

//ustawienie koloru tła obiektów

label2

.setBackground(Color.

white

);

label3

.setBackground(Color.

white

);

labelC

.setBackground(Color.

black

);

labelFill

.setBackground(Color.

white

);

buttonColor

[0].setBackground(Color.

black

);

background image

buttonColor

[1].setBackground(Color.

darkGray

);

buttonColor

[2].setBackground(Color.

gray

);

buttonColor

[3].setBackground(Color.

lightGray

);

buttonColor

[4].setBackground(Color.

white

);

buttonColor

[5].setBackground(Color.

pink

);

buttonColor

[6].setBackground(Color.

red

);

buttonColor

[7].setBackground(Color.

orange

);

buttonColor

[8].setBackground(Color.

yellow

);

buttonColor

[9].setBackground(Color.

green

);

buttonColor

[10].setBackground(Color.

cyan

);

buttonColor

[11].setBackground(Color.

blue

);

buttonColor

[12].setBackground(Color.

magenta

);

buttonClear

.addActionListener(

this

);

//dodanie przechwytywania zdarzeń do

obiektów

buttonBrush

.addActionListener(

this

);

buttonEraser

.addActionListener(

this

);

buttonLine

.addActionListener(

this

);

buttonRect

.addActionListener(

this

);

buttonRRect

.addActionListener(

this

);

buttonOval

.addActionListener(

this

);

buttonPoly

.addActionListener(

this

);

buttonFill

.addActionListener(

this

);

buttonText

.addActionListener(

this

);

buttonOutline

.addActionListener(

this

);

buttonSolid

.addActionListener(

this

);

buttonClear

.addKeyListener(

this

);

buttonBrush

.addKeyListener(

this

);

buttonEraser

.addKeyListener(

this

);

buttonLine

.addKeyListener(

this

);

buttonRect

.addKeyListener(

this

);

buttonRRect

.addKeyListener(

this

);

buttonOval

.addKeyListener(

this

);

buttonPoly

.addKeyListener(

this

);

buttonText

.addKeyListener(

this

);

buttonOutline

.addKeyListener(

this

);

buttonSolid

.addKeyListener(

this

);

backbuffer

=

new

BufferedImage(

width

,

height

, BufferedImage.

TYPE_INT_ARGB

);

//stworzenie obiektu buforującego obraz

backg

=

backbuffer

.createGraphics();

//przypisanie bufora do obiektu

rysującego

backg

.setBackground(Color.

white

);

//ustawienie koloru tła

backg

.clearRect(0, 0,

width

,

height

);

//wyczyszczenie obrazu

backg

.setStroke(

new

BasicStroke(1,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

//ustawienie rozmiaru i

kształtu rysowanych linii

backg

.setColor(Color.

black

);

//ustawienie koloru rysowania

}

@Override

public

void

mouseClicked(MouseEvent arg0) {

//zdarzenie kliknięcia myszy

//

TODO

Auto-generated method stub

if

(

button

== 8 &

drawText

==

false

)

//rozpoczęcie wpisywania tekstu

{

drawText

=

true

;

mx3

= arg0.getX();

my3

= arg0.getY();

}

}

@Override

public

void

mouseEntered(MouseEvent arg0) {

//zdarzenie wejścia myszy w okno

//

TODO

Auto-generated method stub

background image

}

@Override

public

void

mouseExited(MouseEvent arg0) {

//zdarzenie wyjścia myszy z okna

//

TODO

Auto-generated method stub

}

@Override

public

void

mousePressed(MouseEvent arg0) {

//zdarzenie wciśnięcia myszy

//

TODO

Auto-generated method stub

mousePressed

=

true

;

mx

= arg0.getX();

my

= arg0.getY();

if

(

button

== 1){

backg

.fillOval(

mx

-

brushSize

/2,

my

-

brushSize

/2,

brushSize

,

brushSize

);

//narysowanie okręgu narzędziem Brush

repaint();

}

else

if

(

button

== 2)

{

backg

.fillRect(

mx

-

brushSize

/2,

my

-

brushSize

/2,

brushSize

,

brushSize

);

//narysowanie kwadratu narzędziem Eraser

repaint();

}

else

if

(

button

== 7 &

backbuffer

.getRGB(

mx

,

my

) !=

c

.getRGB())

//wywołanie metody flood fill

{

floodFill(

backbuffer

,

mx

,

my

,

c

.getRGB());

repaint();

}

else

if

(

button

== 9 &

points

== 0)

//rozpoczęcie rysowania poligonu

{

points

++;

xpoly

[0] =

mx

;

ypoly

[0] =

my

;

repaint();

}

}

@Override

public

void

mouseReleased(MouseEvent arg0) {

//zdarzenie puszczenia myszy

//

TODO

Auto-generated method stub

mousePressed

=

false

;

if

(

button

== 2)

{

backg

.fillRect(

mx

-

brushSize

/2,

my

-

brushSize

/2,

brushSize

,

brushSize

);

//narysowanie kwadratu narzędziem Eraser

}

else

if

(

button

== 3 & (

mx2

!=

mx

|

my2

!=

my

))

{

backg

.drawLine(

mx

,

my

,

mx2

,

my2

);

//narysowanie linii

narzędziem Line

}

else

if

(

button

== 4)

//narysowanie prostokątu narzędziem Rectangle

{

if

(

fill

==

false

)

{

if

(

mx

<

mx2

&

my

<

my2

)

{

backg

.drawRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

background image

else

if

(

mx

>

mx2

&

my

<

my2

)

{

backg

.drawRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

backg

.drawRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

backg

.drawRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}


}

else

{

if

(

mx

<

mx2

&

my

<

my2

)

{

backg

.fillRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

backg

.fillRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

backg

.fillRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

backg

.fillRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}

}

}

else

if

(

button

== 5)

//narysowanie zaokrąglonego prostokątu narzędziem

Rounded Rectangle

{

if

(

fill

==

false

)

{

if

(

mx

<

mx2

&

my

<

my2

)

{

backg

.drawRoundRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

, 20, 20);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

backg

.drawRoundRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

, 20, 20);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

backg

.drawRoundRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

, 20, 20);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

backg

.drawRoundRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

, 20, 20);

}


}

else

{

if

(

mx

<

mx2

&

my

<

my2

)

{

backg

.fillRoundRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

, 20, 20);

background image

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

backg

.fillRoundRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

, 20, 20);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

backg

.fillRoundRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

, 20, 20);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

backg

.fillRoundRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

, 20, 20);

}

}

}

else

if

(

button

== 6)

//narysowanie elipsy narzędziem Ellipse

{

if

(

fill

==

false

)

{

if

(

mx

<

mx2

&

my

<

my2

)

{

backg

.drawOval(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

backg

.drawOval(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

backg

.drawOval(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

backg

.drawOval(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}


}

else

{

if

(

mx

<

mx2

&

my

<

my2

)

{

backg

.fillOval(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

backg

.fillOval(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

backg

.fillOval(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

backg

.fillOval(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}

}

}

else

if

(

drawText

==

true

)

//narysowanie tekstu

{

drawText

=

false

;

backg

.drawString(

text

,

mx3

-5,

my3

+5);

text

=

""

;

background image

}

else

if

(

button

== 9 &

points

>0)

//kontynuacja rysowania poligonu

{

if

(

points

== 1)

{

if

(arg0.getX() !=

xpoly

[0] | arg0.getY() !=

ypoly

[0])

{

points

++;

xpoly

[1] = arg0.getX();

ypoly

[1] = arg0.getY();

}

else

{

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

}

}

else

{

xpoly

[

points

] = arg0.getX();

ypoly

[

points

] = arg0.getY();

points

++;

if

(

points

== 1000)

{

if

(

fill

==

false

)

backg

.drawPolygon(

xpoly

,

ypoly

,

points

);

else

backg

.fillPolygon(

xpoly

,

ypoly

,

points

);

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

repaint();

}

}

}
repaint();

}

@Override

public

void

mouseDragged(MouseEvent arg0) {

//zdarzenie ruchu wciśniętej myszy

//

TODO

Auto-generated method stub

mx2

= arg0.getX();

my2

= arg0.getY();

if

(

button

== 1)

{

backg

.drawLine(

mx

,

my

,

mx2

,

my2

);

//narysowanie linii

zapewniającej ciągłość kształtu narysowanego narzędziem Brush

mx

= arg0.getX();

my

= arg0.getY();

}

else

if

(

button

== 2)

{

backg

.drawLine(

mx

,

my

,

mx2

,

my2

);

//narysowanie linii

zapewniającej ciągłość kształtu narysowanego narzędziem Eraser

mx

= arg0.getX();

my

= arg0.getY();

}
repaint();

}

@Override

background image

public

void

mouseMoved(MouseEvent arg0) {

//zdarzenie ruchu myszy

//

TODO

Auto-generated method stub

mx2

= arg0.getX();

my2

= arg0.getY();

repaint();

}

@Override

public

void

actionPerformed(ActionEvent arg0) {

//zdarzenie działania na

obiektach(np. przyciskach)

//

TODO

Auto-generated method stub

if

(arg0.getSource() ==

buttonClear

){

//wyczyszczenie ekranu klawiszem

Clear

backg

.clearRect(0, 0,

width

,

height

);

repaint();

}

else

if

(arg0.getSource() ==

buttonBrush

){

//wybranie narzędzia

odpowiednim przyciskiem

button

= 1;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

label1

.setText(

"Selected tool: Brush"

);

backg

.setColor(

c

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonEraser

){

button

= 2;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

label1

.setText(

"Selected tool: Eraser"

);

backg

.setColor(Color.

white

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonLine

){

button

= 3;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

label1

.setText(

"Selected tool: Line"

);

backg

.setColor(

c

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonRect

){

button

= 4;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

label1

.setText(

"Selected tool: Rectangle"

);

backg

.setColor(

c

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonRRect

){

button

= 5;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

label1

.setText(

"Selected tool: Rounded Rectangle"

);

backg

.setColor(

c

);

label1

.invalidate();

validate();

}

background image

else

if

(arg0.getSource() ==

buttonOval

){

button

= 6;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

label1

.setText(

"Selected tool: Ellipse"

);

backg

.setColor(

c

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonFill

){

button

= 7;

label1

.setText(

"Selected tool: Bucket"

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonText

){

button

= 8;

label1

.setText(

"Selected tool: Text"

);

backg

.setColor(

c

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonPoly

){

button

= 9;

backg

.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

backg

.setColor(

c

);

label1

.setText(

"Selected tool: Polygon"

);

label1

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonOutline

){

//wybranie sposobu

wypełniania figur

fill

=

false

;

labelFill

.setText(

"Selected shape fill: Outline"

);

labelFill

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonSolid

){

fill

=

true

;

labelFill

.setText(

"Selected shape fill: Solid"

);

labelFill

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonSize

[0]){

//wybranie rozmiaru

rysowanych kształtów

brushSize

= 1;

fontSize

= 12;

backg

.setStroke(

new

BasicStroke(1,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

backg

.setFont(

new

Font(

"TimesRoman"

,Font.

PLAIN

,

fontSize

));

label2

.setText(

"Selected size: 1"

);

label2

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonSize

[1]){

brushSize

= 3;

fontSize

= 16;

backg

.setStroke(

new

BasicStroke(3,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

backg

.setFont(

new

Font(

"TimesRoman"

,Font.

PLAIN

,

fontSize

));

label2

.setText(

"Selected size: 2"

);

background image

label2

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonSize

[2]){

brushSize

= 5;

fontSize

= 20;

backg

.setStroke(

new

BasicStroke(5,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

backg

.setFont(

new

Font(

"TimesRoman"

,Font.

PLAIN

,

fontSize

));

label2

.setText(

"Selected size: 3"

);

label2

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonSize

[3]){

brushSize

= 7;

fontSize

= 24;

backg

.setStroke(

new

BasicStroke(7,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

backg

.setFont(

new

Font(

"TimesRoman"

,Font.

PLAIN

,

fontSize

));

label2

.setText(

"Selected size: 4"

);

label2

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonSize

[4]){

brushSize

= 9;

fontSize

= 29;

backg

.setStroke(

new

BasicStroke(9,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

backg

.setFont(

new

Font(

"TimesRoman"

,Font.

PLAIN

,

fontSize

));

label2

.setText(

"Selected size: 5"

);

label2

.invalidate();

validate();

}

else

if

(arg0.getSource() ==

buttonColor

[0]){

//wybranie koloru rysowania

c

= Color.

black

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[1]){

c

= Color.

darkGray

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[2]){

c

= Color.

gray

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[3]){

c

= Color.

lightGray

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[4]){

c

= Color.

white

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[5]){

c

= Color.

pink

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

background image

}

else

if

(arg0.getSource() ==

buttonColor

[6]){

c

= Color.

red

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[7]){

c

= Color.

orange

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[8]){

c

= Color.

yellow

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[9]){

c

= Color.

green

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[10]){

c

= Color.

cyan

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[11]){

c

= Color.

blue

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

else

if

(arg0.getSource() ==

buttonColor

[12]){

c

= Color.

magenta

;

backg

.setColor(

c

);

labelC

.setBackground(

c

);

}

if

(

drawText

==

true

)

//zakończenie pisania tekstu przez naciśnięcie

przycisku

{

boolean

tmp =

true

;

for

(

int

i=0;i<13;i++)

{

if

(arg0.getSource() ==

buttonColor

[i] | arg0.getSource() ==

buttonText

)

{

tmp =

false

;

break

;

}

else

if

(i < 5)

{

if

(arg0.getSource() ==

buttonSize

[i])

{

tmp =

false

;

break

;

}

}

}

if

(tmp ==

true

)

{

drawText

=

false

;

backg

.drawString(

text

,

mx3

-5,

my3

+5);

background image

text

=

""

;

repaint();

}

}

else

if

(

points

> 0)

//zakończenie rysowania poligonu przez naciśnięcie

przycisku

{

boolean

tmp =

true

;

for

(

int

i=0;i<13;i++)

{

if

(arg0.getSource() ==

buttonColor

[i])

{

tmp =

false

;

break

;

}

else

if

(i < 5)

{

if

(arg0.getSource() ==

buttonSize

[i])

{

tmp =

false

;

break

;

}

else

if

(i<2)

{

if

(arg0.getSource() ==

buttonOutline

|

arg0.getSource() ==

buttonSolid

)

{

tmp =

false

;

break

;

}

}

}

}

if

(tmp ==

true

)

{

if

(

points

== 1)

{

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

}

else

{

if

(

fill

==

false

)

backg

.drawPolygon(

xpoly

,

ypoly

,

points

);

else

backg

.fillPolygon(

xpoly

,

ypoly

,

points

);

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

repaint();

}

}

}
repaint();

}

@Override

public

void

keyPressed(KeyEvent arg0) {

//zdarzenie wciśnięcia klawisza

//

TODO

Auto-generated method stub

}

background image

@Override

public

void

keyReleased(KeyEvent arg0) {

//zdarzenie puszczenia klawisza

//

TODO

Auto-generated method stub

}

@Override

public

void

keyTyped(KeyEvent arg0) {

//zdarzenie przechwycenia znaku z

klawiatury przez system

//

TODO

Auto-generated method stub

if

(

drawText

==

true

)

//dodanie znaku wpisanego na klawiaturze do

tekstu w narzędziu text

{

char

ch = arg0.getKeyChar();

if

(ch != KeyEvent.

CHAR_UNDEFINED

) {

text

+= ch;

repaint();

}

}

else

if

(arg0.getKeyChar() == KeyEvent.

VK_ENTER

&

points

>0)

//przechwycenie

wciśnięcia klawisza Enter i zakończenie rysowania poligonu

{

if

(

points

== 1)

{

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

}

else

{

if

(

fill

==

false

)

backg

.drawPolygon(

xpoly

,

ypoly

,

points

);

//narysowanie pustego poligonu

else

backg

.fillPolygon(

xpoly

,

ypoly

,

points

);

//narysowanie pełnego poligonu

points

= 0;

xpoly

=

new

int

[1000];

ypoly

=

new

int

[1000];

repaint();

}

}

}

public

void

update(Graphics g)

//nadpisanie metody update

{

Graphics2D g2 = (Graphics2D)g;
g2.drawImage(

backbuffer

,

null

, 0, 0);

//rysowanie obrazu z bufora

if

(

button

== 1)

//rysowanie tymczasowych obrazów

{

g2.setColor(

c

);

g2.fillOval(

mx2

-

brushSize

/2,

my2

-

brushSize

/2,

brushSize

,

brushSize

);

}

else

if

(

button

== 2)

{

g2.setColor(Color.

white

);

g2.fillRect(

mx2

-

brushSize

/2,

my2

-

brushSize

/2,

brushSize

,

brushSize

);

g2.setColor(Color.

black

);

g2.drawRect(

mx2

-

brushSize

/2,

my2

-

brushSize

/2,

brushSize

,

brushSize

);

}

else

if

(

button

== 3 &

mousePressed

==

true

)

background image

{

g2.setColor(

c

);

g2.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

g2.drawLine(

mx

,

my

,

mx2

,

my2

);

}

else

if

(

button

== 4 &

mousePressed

==

true

)

{

g2.setColor(

c

);

g2.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

if

(

fill

==

false

)

{

if

(

mx

<

mx2

&

my

<

my2

)

{

g2.drawRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

g2.drawRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

g2.drawRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

g2.drawRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}


}

else

{

if

(

mx

<

mx2

&

my

<

my2

)

{

g2.fillRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

g2.fillRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

g2.fillRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

g2.fillRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}

}

}

else

if

(

button

== 5 &

mousePressed

==

true

)

{

g2.setColor(

c

);

g2.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

if

(

fill

==

false

)

{

if

(

mx

<

mx2

&

my

<

my2

)

{

g2.drawRoundRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

, 20, 20);

}

background image

else

if

(

mx

>

mx2

&

my

<

my2

)

{

g2.drawRoundRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

, 20, 20);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

g2.drawRoundRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

, 20, 20);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

g2.drawRoundRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

, 20, 20);

}


}

else

{

if

(

mx

<

mx2

&

my

<

my2

)

{

g2.fillRoundRect(

mx

,

my

,

mx2

-

mx

,

my2

-

my

, 20, 20);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

g2.fillRoundRect(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

, 20, 20);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

g2.fillRoundRect(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

, 20, 20);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

g2.fillRoundRect(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

, 20, 20);

}

}

}

else

if

(

button

== 6 &

mousePressed

==

true

)

{

g2.setColor(

c

);

g2.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

if

(

fill

==

false

)

{

if

(

mx

<

mx2

&

my

<

my2

)

{

g2.drawOval(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

g2.drawOval(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

g2.drawOval(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

g2.drawOval(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}


}

else

{

if

(

mx

<

mx2

&

my

<

my2

)

background image

{

g2.fillOval(

mx

,

my

,

mx2

-

mx

,

my2

-

my

);

}

else

if

(

mx

>

mx2

&

my

<

my2

)

{

g2.fillOval(

mx2

,

my

,

mx

-

mx2

,

my2

-

my

);

}

else

if

(

mx

<

mx2

&

my

>

my2

)

{

g2.fillOval(

mx

,

my2

,

mx2

-

mx

,

my

-

my2

);

}

else

if

(

mx

>

mx2

&

my

>

my2

)

{

g2.fillOval(

mx2

,

my2

,

mx

-

mx2

,

my

-

my2

);

}

}

}

else

if

(

drawText

==

true

)

{

g2.drawLine(

mx3

-5,

my3

+5,

mx3

-5,

my3

-5);

g2.drawLine(

mx3

-5,

my3

+5,

mx3

+5,

my3

+5);

g2.setColor(

c

);

g2.setFont(

new

Font(

"TimesRoman"

,Font.

PLAIN

,

fontSize

));

g2.drawString(

text

,

mx3

-5,

my3

+5);

}

else

if

(

points

> 0)

{

g2.setColor(

c

);

g2.setStroke(

new

BasicStroke(

brushSize

,BasicStroke.

CAP_ROUND

,BasicStroke.

JOIN_ROUND

));

int

xpoly2[] =

xpoly

;

int

ypoly2[] =

ypoly

;

xpoly2[

points

] =

mx2

;

ypoly2[

points

] =

my2

;

if

(

fill

==

false

)

g2.drawPolygon(xpoly2, ypoly2,

points

+1);

else

g2.fillPolygon(xpoly2, ypoly2,

points

+1);

}

getToolkit().sync();

//metoda wspomagająca buforowanie obrazu na niektóych

systemach

}

public

void

paint(Graphics g)

//metoda rysująca

{

update(g);

}

public

void

floodFill(BufferedImage image,

int

x,

int

y,

int

fillColor)

//metoda z algorytmem flood fill

{
java.util.ArrayList<Point> list =

new

java.util.ArrayList<Point>();

int

color = image.getRGB(x,y);

list.add(

new

Point(x,y));

while

(list.size()>0)

{
Point p = list.remove(0);
x = p.

x

;

y = p.

y

;

if

(image.getRGB(x,y)==color)

{

background image

image.setRGB(x, y, fillColor);

if

(x > 0)

list.add(

new

Point(x-1,y));

if

(x <

width

-1)

list.add(

new

Point(x+1,y));

if

(y > 0)

list.add(

new

Point(x,y-1));

if

(y <

height

-1)

list.add(

new

Point(x,y+1));



}
}

}

}


Wyszukiwarka

Podobne podstrony:
Sprawozdanie Java Lab2 Karol Leszczyński gr13
sprawozdanie programowanie lab3
Java lab3
sprawozdanie programowanie lab3 fin2
sprawozdanie oswietlenie, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
Lab3-Linux-en, studia, studia, sprawozdania, pomoce, Lab
Lab3-Linux, studia, studia, sprawozdania, pomoce, Lab
Sprawozdania Karol, Współczynnik podziału, Gr
Sprawozdania Karol, Przewodnictwo elektrolitów
Mechanika płynów sprawozdanie z lab3 Kopia
Sprawozdanie lab3 4
Sprawozdanie lab3
Mechanika plynow sprawozdanie z lab3
Sprawozdanie lab3 Kurek M Kąkol, Semestr 1 mgr
Sprawozdania Karol, Farmakokinetyka
I6A1N2, Lab3-sprawozdanie
WEiP-MichalTurzynski-lab3, Sprawozdanie 3 (WEiP-2009)
Sprawozdanie lab3, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, labork

więcej podobnych podstron