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);
}
}
# 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
# 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);
}
}
