DIBUJAMOS CON EL J++ DE MICROSOFT UTILIZANDO LA WFJ
El código de la clase es el siguiente:
import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;
public class Form1 extends Form
{
//Declaro los puntos con los que vamos a dibujar
//dos puntos para dibujar en el momento P1 y P2
//y dos puntos para borrar el dibujo anterior P11 y
P22
public
Point P1,P2,P11,P22;
//Variables Booleanas,
primer punto capturado y transparente
boolean
capturado,transparente;
//variable para escojer el
tipo de figura Línea, Rectangulo o Elipse
int
figura;
//Dos variables del tipo color el color elegido y el
de fondo
Color color,color_fondo;
//Un objeto gràfico.
Graphics g;
public
Form1()
{
//Inicializamos las variables y los
puntos
P1= new Point();
P2=
new Point();
P11=
new Point();
P22=
new Point();
P1.x=0;
P1.y=0;
P2.x=0;
P2.y=0;
P11.x=0;
P11.y=0;
P22.x=0;
P22.y=0;
//creamos el objeto gráfico
g=this.createGraphics();
//Al empezar la figura será una recta
figura=0;
//Las figuras al empezar son
transparentes
transparente=true;
//El primer punto no está capturado
capturado=false;
//El color inicial es el negro
color=
color.BLACK;
//El color de fondo inicial es el del
formulario
color_fondo=
Color.CONTROL;
//Se inicializa el formulario
initForm();
}
public
void dispose()
{
super.dispose();
components.dispose();
}
public
void Form1_mouseDown(Object source, MouseEvent e)
{
//capturamos el punto
capturado=true;
//recojemos
los valores del primer punto en P1
P1.x=e.x;
P1.y=e.y;
//Escribimos la posición de los puntos
label1.setText(String.valueOf(e.x + " , " + e.y ).toString());
}
private
void Form1_mouseMove(Object source, MouseEvent e)
{
//Tomamos nota del punto donde está el
ratón
P2.x=e.x;
P2.y=e.y;
label1.setText(String.valueOf(e.x + " , " + e.y ).toString());
//Si está capturado el primer punto
dibujamos
if(capturado)
{
dibujar();
P11.x=P1.x;
P11.y=P1.y;
P22.x=P2.x;
P22.y=P2.y;
}
//Tomamos nota de los puntos antiguos
para poder redibujar.
}
public
void Form1_mouseUp(Object source, MouseEvent e)
{
if(capturado)
{
//Al dejar de pulsar fijamos la figura
capturado=false;
//tomamos nota del punto
P2.x=e.x;
P2.y=e.y;
label1.setText(String.valueOf(e.x + " , " + e.y ).toString());
//dibujamos
dibujar();
//Inicializamos las
variables antiguas para que no molesten
P1.x=0;
P1.y=0;
P2.x=0;
P2.y=0;
P11.x=0;
P11.y=0;
P22.x=0;
P22.y=0;
}
}
private
void button1_click(Object source, Event e)
{
//Establecemos una línea
figura=0;
}
private
void button2_click(Object source, Event e)
{
//Establecemos un Rectángulo
figura=1;
}
private
void button3_click(Object source, Event e)
{
//Establecemos una Elipse
figura=2;
}
private
void button4_click(Object source, Event e)
{
//Establecemos el color rojo
color=Color.RED;
}
private
void button5_click(Object source, Event e)
{
//Establecemos el color verde
color=Color.GREEN;
}
private
void button6_click(Object source, Event e)
{
//Establecemos el color azul
color=Color.BLUE;
}
private
void button7_click(Object source, Event e)
{
//Establecemos el color amarillo
color=Color.YELLOW;
}
private
void checkBox1_click(Object source,
Event e)
{
//Establecemos la opción transparente
transparente=!checkBox1.getChecked();
}
private
void Form1_click(Object source, Event e)
{
}
private
void dibujar()
{
//Creamos el objeto gráfico
Graphics g =
this.createGraphics();
//Establecemos el color de fondo
g.setBrush(new Brush(color));
//Establecemos el color de línea
g.setPen(new Pen(color));
//Según la variable figura
switch(figura)
{
case 0:
//Caso de la línea
//Borramos la línea
anterior
if (capturado){
g.setPen(new
Pen(color_fondo));
g.drawLine(P11,P22);
}
//dibujamos la figura.
g.setPen(new Pen(color));
g.drawLine(P1,P2);
break; //Salimos de la función
case 1: //caso
del rectángulo
//Borramos el
rectángulo anterior
if(capturado){
g.setPen(new
Pen(color_fondo));
g.setBrush(new
Brush(color_fondo));
g.drawRect(P11.x,P11.y,P22.x-P11.x,P22.y-P11.y);
}
//Dibujamos el nuevo
rectángulo
g.setPen(new Pen(color));
g.setBrush(new Brush(color));
//Si es transparente el fondo lo ponemos como estaba
if(transparente)g.setBrush(new Brush(color_fondo));
g.drawRect(P1.x,P1.y,P2.x-P1.x,P2.y-P1.y);
break;
case 2: //caso de la elipse
if(capturado){
g.setPen(new
Pen(color_fondo));
g.setBrush(new
Brush(color_fondo));
g.drawEllipse(P11.x,P11.y,P22.x-P11.x,P22.y-P11.y);
}
g.setBrush(new
Brush(color));
if(transparente)g.setBrush(new Brush(color_fondo));
g.setPen(new
Pen(color));
g.drawEllipse(P1.x,P1.y,P2.x-P1.x,P2.y-P1.y);
break;
}
}
private
void Form1_paint(Object source, PaintEvent e)
{
}
Container
components = new Container();
Button button1 =
new Button();
Button button2 =
new Button();
Button button3 =
new Button();
Button button4 =
new Button();
Button button5 =
new Button();
Button button6 =
new Button();
Button button7 =
new Button();
CheckBox
checkBox1 = new CheckBox();
Label label1 = new Label();
private
void initForm()
{
this.setText("Dibujando en Java de Microsoft");
this.setAutoScaleBaseSize(new Point(5, 13));
this.setClientSize(new Point(454, 296));
this.addOnClick(new
EventHandler(this.Form1_click));
this.addOnMouseDown(new MouseEventHandler(this.Form1_mouseDown));
this.addOnMouseMove(new MouseEventHandler(this.Form1_mouseMove));
this.addOnMouseUp(new MouseEventHandler(this.Form1_mouseUp));
this.addOnPaint(new
PaintEventHandler(this.Form1_paint));
button1.setLocation(new Point(40, 8));
button1.setSize(new Point(56, 24));
button1.setTabIndex(0);
button1.setText("Línea");
button1.addOnClick(new EventHandler(this.button1_click));
button2.setLocation(new Point(112, 8));
button2.setSize(new Point(64, 24));
button2.setTabIndex(1);
button2.setText("Rectángulo");
button2.addOnClick(new EventHandler(this.button2_click));
button3.setLocation(new Point(192, 8));
button3.setSize(new Point(80, 24));
button3.setTabIndex(2);
button3.setText("Elipse");
button3.addOnClick(new EventHandler(this.button3_click));
button4.setLocation(new Point(40, 264));
button4.setSize(new Point(56, 24));
button4.setTabIndex(3);
button4.setText("Rojo");
button4.addOnClick(new EventHandler(this.button4_click));
button5.setLocation(new Point(112, 264));
button5.setSize(new Point(56, 24));
button5.setTabIndex(4);
button5.setText("Verde");
button5.addOnClick(new EventHandler(this.button5_click));
button6.setLocation(new Point(184, 264));
button6.setSize(new Point(48, 24));
button6.setTabIndex(5);
button6.setText("Azul");
button6.addOnClick(new EventHandler(this.button6_click));
button7.setLocation(new Point(248, 264));
button7.setSize(new Point(56, 24));
button7.setTabIndex(6);
button7.setText("
button7.addOnClick(new EventHandler(this.button7_click));
checkBox1.setLocation(new Point(312, 264));
checkBox1.setSize(new Point(88, 24));
checkBox1.setTabIndex(7);
checkBox1.setText("Opaco");
checkBox1.addOnClick(new EventHandler(this.checkBox1_click));
label1.setLocation(new Point(288, 8));
label1.setSize(new Point(160, 24));
label1.setTabIndex(8);
label1.setTabStop(false);
label1.setText("");
this.setNewControls(new Control[] {
label1,
checkBox1,
button7,
button6,
button5,
button4,
button3,
button2,
button1});
}
public
static void main(String args[])
{
Application.run(new Form1());
}
}