Paintbrush

How do i make a program where my drawings are restricted to the main paint canvas?

This is my code so far:

import java.applet.Applet;

import java.awt.*;

public class Lab13 extends Applet

{

Image offscreenImage;

Image virtualMem;

Graphics gBuffer;

int oldX, oldY, newX, newY;

int appletWidth;

int appletHeight;

Rectangle red, green, blue, black, yellow;

int numColor;

public void init()

{

appletWidth = getWidth();

appletHeight = getHeight();

virtualMem = createImage(appletWidth,appletHeight);

gBuffer = virtualMem.getGraphics();

red = new Rectangle(10,70,50,50);

green = new Rectangle (10,170,50,50);

blue = new Rectangle(10,270,50,50);

black = new Rectangle (10,370,50,50);

yellow = new Rectangle (10,470,50,50);

numColor=0;

}

public void paint(Graphics g)

{

gBuffer.drawLine(oldX,oldY,newX,newY);

gBuffer.setColor(Color.gray);

gBuffer.fillRect(0,0,70,600);

gBuffer.setColor(Color.red);

gBuffer.fillRect(10,70,50,50);

gBuffer.setColor(Color.green);

gBuffer.fillRect(10,170,50,50);

gBuffer.setColor(Color.blue);

gBuffer.fillRect(10,270,50,50);

gBuffer.setColor(Color.black);

gBuffer.fillRect(10,370,50,50);

gBuffer.setColor(Color.yellow);

gBuffer.fillRect(10,470,50,50);

g.drawImage(virtualMem,0,0,this);

switch (numColor)

{

case 1:

gBuffer.setColor(Color.red);

break;

case 2:

gBuffer.setColor(Color.green);

break;

case 3:

gBuffer.setColor(Color.blue);

break;

case 4:

gBuffer.setColor(Color.black);

break;

case 5:

gBuffer.setColor(Color.yellow);

break;

}

}

public boolean mouseDown(Event e, int x, int y)

{

if(red.inside(x,y))

numColor = 1;

else if(green.inside(x,y))

numColor = 2;

else if(blue.inside(x,y))

numColor = 3;

else if (black.inside(x,y))

numColor = 4;

else if(yellow.inside(x,y))

numColor = 5;

newX = x;

newY = y;

oldX = newX;

oldY = newY;

repaint();

return true;

}

public boolean mouseDrag(Event e, int x, int y)

{

newX = x;

newY = y;

oldX = newX;

oldY = newY;

repaint();

return true;

}

public void update(Graphics g)

{

paint(g);

}

}

[2518 byte] By [trita629a] at [2007-11-26 15:00:31]
# 1

// <applet code="L13" width="400" height="600"></applet>

import java.applet.Applet;

import java.awt.*;

public class L13 extends Applet

{

AppletGraphicPanel graphicPanel;

public void init()

{

graphicPanel = new AppletGraphicPanel();

setLayout(new BorderLayout());

add(graphicPanel, BorderLayout.CENTER);

}

}

class AppletGraphicPanel extends Panel

{

Image offscreenImage;

Image virtualMem;

Graphics gBuffer;

int oldX, oldY, newX, newY;

int appletWidth;

int appletHeight;

Rectangle red, green, blue, black, yellow;

int numColor;

public AppletGraphicPanel()

{

red = new Rectangle(10,70,50,50);

green = new Rectangle (10,170,50,50);

blue = new Rectangle(10,270,50,50);

black = new Rectangle (10,370,50,50);

yellow = new Rectangle (10,470,50,50);

numColor=0;

}

public void paint(Graphics g)

{

if(virtualMem == null)

{

appletWidth = getWidth();

appletHeight = getHeight();

virtualMem = createImage(appletWidth,appletHeight);

gBuffer = virtualMem.getGraphics();

}

gBuffer.drawLine(oldX,oldY,newX,newY);

gBuffer.setColor(Color.gray);

gBuffer.fillRect(0,0,70,600);

gBuffer.setColor(Color.red);

gBuffer.fillRect(10,70,50,50);

gBuffer.setColor(Color.green);

gBuffer.fillRect(10,170,50,50);

gBuffer.setColor(Color.blue);

gBuffer.fillRect(10,270,50,50);

gBuffer.setColor(Color.black);

gBuffer.fillRect(10,370,50,50);

gBuffer.setColor(Color.yellow);

gBuffer.fillRect(10,470,50,50);

g.drawImage(virtualMem,0,0,this);

switch (numColor)

{

case 1:

gBuffer.setColor(Color.red);

break;

case 2:

gBuffer.setColor(Color.green);

break;

case 3:

gBuffer.setColor(Color.blue);

break;

case 4:

gBuffer.setColor(Color.black);

break;

case 5:

gBuffer.setColor(Color.yellow);

break;

}

}

public boolean mouseDown(Event e, int x, int y)

{

if(red.inside(x,y))

numColor = 1;

else if(green.inside(x,y))

numColor = 2;

else if(blue.inside(x,y))

numColor = 3;

else if (black.inside(x,y))

numColor = 4;

else if(yellow.inside(x,y))

numColor = 5;

newX = x;

newY = y;

oldX = newX;

oldY = newY;

repaint();

return true;

}

public boolean mouseDrag(Event e, int x, int y)

{

newX = x;

newY = y;

oldX = newX;

oldY = newY;

repaint();

return true;

}

public void update(Graphics g)

{

paint(g);

}

}

crwooda at 2007-7-8 8:49:21 > top of Java-index,Desktop,Core GUI APIs...
# 2
Thanks but how do i make a visible border.... like if i drew a rectangle in the center how would i make it so it doesnt draw outside the drawn rectangle?Message was edited by: trita629
trita629a at 2007-7-8 8:49:21 > top of Java-index,Desktop,Core GUI APIs...
# 3

// <applet code="L13" width="400" height="600"></applet>

import java.applet.Applet;

import java.awt.*;

public class L13 extends Applet

{

AppletGraphicPanel graphicPanel;

public void init()

{

graphicPanel = new AppletGraphicPanel();

setLayout(new BorderLayout());

add(graphicPanel, BorderLayout.CENTER);

}

}

class AppletGraphicPanel extends Panel

{

Image virtualMem;

Graphics gBuffer;

int oldX, oldY, newX, newY;

Rectangle red, green, blue, black, yellow;

Rectangle border;

int numColor;

public AppletGraphicPanel()

{

red = new Rectangle(10,70,50,50);

green = new Rectangle (10,170,50,50);

blue = new Rectangle(10,270,50,50);

black = new Rectangle (10,370,50,50);

yellow = new Rectangle (10,470,50,50);

numColor=0;

}

public void paint(Graphics g)

{

if(virtualMem == null)

{

int width = getWidth();

int height = getHeight();

int x = width/3;

int y = height/4;

border = new Rectangle(x, y, width/2, height/2);

virtualMem = createImage(width, height);

gBuffer = virtualMem.getGraphics();

((Graphics2D)gBuffer).draw(border);

}

gBuffer.drawLine(oldX,oldY,newX,newY);

gBuffer.setColor(Color.gray);

gBuffer.fillRect(0,0,70,600);

gBuffer.setColor(Color.red);

gBuffer.fillRect(10,70,50,50);

gBuffer.setColor(Color.green);

gBuffer.fillRect(10,170,50,50);

gBuffer.setColor(Color.blue);

gBuffer.fillRect(10,270,50,50);

gBuffer.setColor(Color.black);

gBuffer.fillRect(10,370,50,50);

gBuffer.setColor(Color.yellow);

gBuffer.fillRect(10,470,50,50);

g.drawImage(virtualMem,0,0,this);

switch (numColor)

{

case 1:

gBuffer.setColor(Color.red);

break;

case 2:

gBuffer.setColor(Color.green);

break;

case 3:

gBuffer.setColor(Color.blue);

break;

case 4:

gBuffer.setColor(Color.black);

break;

case 5:

gBuffer.setColor(Color.yellow);

break;

}

}

public boolean mouseDown(Event e, int x, int y)

{

if(red.inside(x,y))

numColor = 1;

else if(green.inside(x,y))

numColor = 2;

else if(blue.inside(x,y))

numColor = 3;

else if (black.inside(x,y))

numColor = 4;

else if(yellow.inside(x,y))

numColor = 5;

if(border.contains(x, y))

{

newX = x;

newY = y;

oldX = newX;

oldY = newY;

repaint();

}

return true;

}

public boolean mouseDrag(Event e, int x, int y)

{

if(border.contains(x, y))

{

newX = x;

newY = y;

oldX = newX;

oldY = newY;

repaint();

}

return true;

}

public void update(Graphics g)

{

paint(g);

}

}

crwooda at 2007-7-8 8:49:21 > top of Java-index,Desktop,Core GUI APIs...