Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/05/2010, 18:58
joseluisbz
 
Fecha de Ingreso: febrero-2007
Ubicación: Barranquilla, Colombia
Mensajes: 181
Antigüedad: 17 años, 10 meses
Puntos: 3
setXORMode, setPaintMode, Borrar una gráfica de muchas

Cordial Saludo:

Estoy tratando de implementar una clase que me grafique diferentes señales; hasta ahora la clase grafica varias señales, la inquitud está es en borrar una de ellas.
Mi clase borra, pero deja vestigios de la señal que recien fue borrada u ocultada...

Pongo el código de mi clase para que por favor si pueden me ayuden... aclarar..

Código Java:
Ver original
  1. class Graficar extends javax.swing.JFrame {
  2.   private int numVble;
  3.   private Vector<Color> cVector = new Vector<Color>();    //Vector de Color de la Variable
  4.   private Vector<String> nVector = new Vector<String>();  //Vector de Nombre de la Variable
  5.   private Vector<Graphics2D> gVector = new Vector<Graphics2D>();//Vector de Graphic de la Variable
  6.   private Vector<Double []> xVector = new Vector<Double []>();//Vector de Arreglo de X de la Variable
  7.   private Vector<Double []> yVector = new Vector<Double []>();//Vector de Arreglo de Y de la Variable
  8.   private Vector<Double> xMin = new Vector<Double>();//Vector de Valor Mínimo del Arreglo de X de la Variable
  9.   private Vector<Double> yMin = new Vector<Double>();//Vector de Valor Mínimo del Arreglo de Y de la Variable
  10.   private Vector<Double> xMax = new Vector<Double>();//Vector de Valor Máximo del Arreglo de X de la Variable
  11.   private Vector<Double> yMax = new Vector<Double>();//Vector de Valor Máximo del Arreglo de Y de la Variable
  12.   private Vector<Float> dVector = new Vector<Float>();//Vector de Espesor de la Variable
  13.   private int PosX, PosY, Largo, Ancho;
  14.   String VbleX, VbleY; //Agragar Nombre de Variables X y Y
  15.   String TitleV, TitleH; //Agrega Título Vertical(Izquierda) y Título Horizontal(Debajo)
  16.   String TitleM, TitleS; //Título Principal y Título Secundario
  17.   Canvas Lienzo;
  18.   private double MaxX, MinX, MaxY, MinY; //Almacena Máximos y Mínimos de Coordenadas X y Y
  19.   Graficar(int xPos, int yPos, int xWidth, int yLarge){
  20.     numVble = 0;
  21.     Lienzo = new Canvas();
  22.     setDimension(xWidth,yLarge);
  23.     setPosition(xPos,yPos);
  24.     Lienzo.setBackground(Color.LIGHT_GRAY);
  25.     Lienzo.setForeground(Color.DARK_GRAY);
  26.   }
  27.   void setPosition(int xPos, int yPos) {
  28.   //Asignar la posición del Lienzo
  29.     PosX = xPos;
  30.     PosY = yPos;
  31.     Lienzo.setLocation(PosX, PosY);
  32.   }
  33.   void getPosition(int xPos, int yPos) {
  34.   //Obtener la posición del Lienzo
  35.     xPos = PosX;
  36.     yPos = PosY;
  37.   }
  38.   void setDimension(int xWidth, int yLarge) {
  39.   //Asignar la Dimensión del Lienzo
  40.     Ancho = xWidth;
  41.     Largo = yLarge;
  42.     Lienzo.setSize(Ancho, Largo);
  43.   }
  44.   void getDimension(int xWidth, int yLarge) {
  45.   //Obtener la Dimensión del Lienzo
  46.     xWidth = Ancho;
  47.     yLarge = Largo;
  48.   }
  49.   double getMax(double[] data){
  50.   //Obtener el valor MAYOR del Arreglo
  51.     if (data.length <1) throw new RuntimeException("Arreglo de datos vacío");
  52.     double Max = data[0];
  53.     for (int i=0;i<data.length;i++){
  54.       if (Max < data[i])
  55.         Max = data[i];
  56.     }
  57.     return Max;
  58.   }
  59.   double getMin(double[] data){
  60.   //Obtener el valor MENOR del Arreglo
  61.     if (data.length <1) throw new RuntimeException("Arreglo de datos vacío");
  62.     double Min = data[0];
  63.     for (int i=0;i<data.length;i++){
  64.       if (Min > data[i])
  65.         Min = data[i];
  66.     }
  67.     return Min;
  68.   }
  69.   double getMax(Vector<Double> data){
  70.   //Obtener el valor MAYOR del Vector
  71.     if (data.size() <1) throw new RuntimeException("Arreglo de datos vacío");
  72.     double Max = data.elementAt(0);
  73.     for (int i=0;i<data.size();i++){
  74.       if (Max < data.elementAt(i))
  75.         Max = data.elementAt(i);
  76.     }
  77.     return Max;
  78.   }
  79.   double getMin(Vector<Double> data){
  80.   //Obtener el valor MENOR del Vector
  81.     if (data.size() <1) throw new RuntimeException("Arreglo de datos vacío");
  82.     double Min = data.elementAt(0);
  83.     for (int i=0;i<data.size();i++){
  84.       if (Min > data.elementAt(i))
  85.         Min = data.elementAt(i);
  86.     }
  87.     return Min;
  88.   }
  89.   Double [] double_Double (double[] ddata){
  90.   //Convierte los datos de double a Double para operar con Vectores
  91.     Double[] Ddata = new Double[ddata.length];
  92.     for (int i=0;i<ddata.length;i++){
  93.       Ddata[i] = ddata[i];
  94.     }
  95.     return Ddata;
  96.   }
  97.   double [] Double_double (Double[] Ddata){
  98.   //Restaura los datos de Double a double para operar con arreglos
  99.     double[] ddata = new double[Ddata.length];
  100.     for (int i=0;i<Ddata.length;i++){
  101.       ddata[i] = Ddata[i];
  102.     }
  103.     return ddata;
  104.   }
  105.   int addVble(Graphics g, String nVble, double[] aX, double[] aY, Color VbleColor, float zDepth){
  106.   //Agrega una variable a Graficar, llamada nVble, de Color VbleColor y Grosor zDepth
  107.     if (nVector.contains(nVble)) throw new RuntimeException("La Variable ya existe");
  108.     if(aX.length != aY.length) throw new RuntimeException("Tallas diferentes");
  109.     if(aX.length == 0||aY.length == 0) throw new RuntimeException("Arreglos de datos vacíos");
  110.     Graphics2D g2 = (Graphics2D)g;
  111.     Double[] vX = double_Double(aX); //Convierte el Arreglo double vX a Vector Double vX
  112.     Double[] vY = double_Double(aY); //Convierte el Arreglo double vY a Vector Double vY
  113.     xMin.add(getMin(aX)); //Agrega el Mínimo valor del Arreglo aX al Vector xMin
  114.     xMax.add(getMax(aX)); //Agrega el Máximo valor del Arreglo aX al Vector xMax
  115.     yMin.add(getMin(aY)); //Agrega el Mínimo valor del Arreglo aY al Vector yMin
  116.     yMax.add(getMax(aY)); //Agrega el Máximo valor del Arreglo aY al Vector yMin
  117.     nVector.add(nVble);
  118.     cVector.add(VbleColor);
  119.     dVector.add(zDepth);
  120.     gVector.add(g2);
  121.     xVector.add(vX);
  122.     yVector.add(vY);
  123.    
  124.     MinX = getMin(xMin);  //Halla el Mínimo Valor de X, del Vector xMin
  125.     MaxX = getMax(xMax);  //Halla el Máximo Valor de X, del Vector xMax
  126.     MinY = getMin(yMin);  //Halla el Mínimo Valor de Y, del Vector yMin
  127.     MaxY = getMax(yMax);  //Halla el Máximo Valor de Y, del Vector yMax
  128.  
  129.     System.out.print("addVble \n");
  130.     System.out.print(nVble+" getMin(aX):"+getMin(aX)+" MinX :"+MinX+"\n");
  131.     System.out.print(nVble+" getMax(aX):"+getMax(aX)+" MaxX :"+MaxX+"\n");
  132.     System.out.print(nVble+" getMin(aY):"+getMin(aY)+" MinY :"+MinY+"\n");
  133.     System.out.print(nVble+" getMax(aY):"+getMax(aY)+" MaxY :"+MaxY+"\n");
  134.     System.out.print(" \n");
  135.     numVble += 1;
  136.     return numVble;
  137.   }
  138.   int numVble() {
  139.   //Retorna el número de variables que hay almacenadas
  140.     return numVble;
  141.   }
  142.   int delVble(String nVble){
  143.   //Elimina una variable a Graficar llamada nVble
  144.     if (!nVector.contains(nVble)) throw new RuntimeException("La Variable no existe");
  145.     int Indice = nVector.indexOf(nVble);
  146.     xMin.remove(Indice);  //Borra el Mínimo valor de X del Vector xMin
  147.     xMax.remove(Indice);  //Borra el Máximo valor de X del Vector xMin
  148.     yMin.remove(Indice);  //Borra el Mínimo valor de Y del Vector yMin
  149.     yMax.remove(Indice);  //Borra el Máximo valor de Y del Vector yMin
  150.     nVector.remove(Indice);
  151.     cVector.remove(Indice);
  152.     dVector.remove(Indice);
  153.     gVector.remove(Indice);
  154.     xVector.remove(Indice);
  155.     yVector.remove(Indice);
  156.  
  157.     MinX = getMin(xMin);  //Halla el Mínimo Valor de X, del Vector xMin
  158.     MaxX = getMax(xMax);  //Halla el Máximo Valor de X, del Vector xMax
  159.     MinY = getMin(yMin);  //Halla el Mínimo Valor de Y, del Vector yMin
  160.     MaxY = getMax(yMax);  //Halla el Máximo Valor de Y, del Vector yMax
  161.  
  162.     System.out.print("delVble \n");
  163.     System.out.print(nVble+" MinX :"+MinX+"\n");
  164.     System.out.print(nVble+" MaxX :"+MaxX+"\n");
  165.     System.out.print(nVble+" MinY :"+MinY+"\n");
  166.     System.out.print(nVble+" MaxY :"+MaxY+"\n");
  167.     System.out.print(" \n");
  168.     numVble -= 1;
  169.     return numVble;
  170.   }
  171.   boolean Exist(String nVble){
  172.   //Verifica si existe una Variable llamada nVble
  173.     return nVector.contains(nVble);
  174.   }
  175.   void ViewAll(){
  176.   //Muestra todas las graficas almacenadas en los vectores
  177.     for (int Indice = 0; Indice<nVector.size();Indice++){
  178.       grafica(Indice, "View");
  179.     }
  180.   }
  181.   void HideAll(){
  182.   //Oculta todas las graficas almacenadas en los vectores
  183.     for (int Indice = 0; Indice<nVector.size();Indice++){
  184.       grafica(Indice, "Hide");
  185.     }
  186.   }
  187.   void ViewVble(String nVble){
  188.   //Muestra la grafica de la Variable llamada nVble
  189.     if (!nVector.contains(nVble)) throw new RuntimeException("La Variable no existe");
  190.     int Indice = nVector.indexOf(nVble);
  191.     grafica(Indice, "View");
  192.   }
  193.   void HideVble(String nVble){
  194.   //Oculta la grafica de la Variable llamada nVble
  195.     if (!nVector.contains(nVble)) throw new RuntimeException("La Variable no existe");
  196.     int Indice = nVector.indexOf(nVble);
  197.     grafica(Indice, "Hide");
  198.   }
  199.   void grafica(int Indice, String Oper){
  200.   //Recarga una gráfica para mostrarla u ocultarla
  201.     Graphics2D g2 = gVector.elementAt(Indice);
  202.     float zDepth = dVector.elementAt(Indice);
  203.     Color color = cVector.elementAt(Indice);
  204.     double[] aX = Double_double(xVector.elementAt(Indice));
  205.     double[] aY = Double_double(yVector.elementAt(Indice));
  206.     g2.setColor(color);
  207.     g2.setStroke(new BasicStroke(zDepth));
  208.     if (Oper.equals("Hide")){
  209.       g2.setXORMode(getBackground());
  210.     }
  211.     if (Oper.equals("View")){
  212.       g2.setPaintMode();
  213.     }
  214.     if (aX.length == 1){
  215.       g2.drawLine ((int)aX[0], (int)aX[0], (int)aY[0], (int)aY[0]);
  216.     } else {
  217.       for (int j = 0;j<aY.length-1;j++){
  218.         //g2.draw( new Line2D.Double((int)vX[i], (int)vX[i+1], (int)vY[i], (int)vY[i+1]));
  219.         g2.drawLine ((int)aX[j], (int)aY[j], (int)aX[j+1], (int)aY[j+1]);
  220.       }
  221.     }
  222.     repaint();
  223.   }
  224.   String[] AllVbles(){
  225.   //Retorna un vector con los nombres de las variables almacenadas
  226.     String[] Vbles = new String[nVector.size()];
  227.     for (int i = 0; i<nVector.size();i++){
  228.       Vbles[i] = nVector.elementAt(i);
  229.     }
  230.     return Vbles;
  231.   }
  232. }
__________________
Jose Luis Bernal Zambrano
Please response to:
[email protected]

Última edición por joseluisbz; 11/05/2010 a las 21:27