private void dibujaPaint(Graphics2D g2){
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);

        g2.clip(new Rectangle2D.Float(0, 0, getWidth(), getHeight()));
        switch (tipo){
            case NONE:{
                
                float x1=0,x2=0,y1=0,y2=getHeight();
                if(!vertical){
                    x1=0;
                    y1=0;
                    x2=getWidth();
                    y2=0;
                }

                Paint paint = new GradientPaint(x1,y1,getBackground(), x2, y2, getBackground().darker());
                g2.setPaint(paint);
                g2.fill(getForma(g2));

                break;
            }
            case CENTRAL:{

                float x1=0,x2=0,y1=0,y2=getHeight();
                if(!vertical){
                    x1=0;
                    y1=0;
                    x2=getWidth();
                    y2=0;
                }


                Paint paint = new LinearGradientPaint(x1, y1, x2, y2, new float[]{0f, 0.30f, 0.5f, 0.70f, 1f},
                        new Color[]{getBackground().darker().darker(),
                        getBackground(),
                        getBackground().brighter(), 
                        getBackground(), 
                        getBackground().darker()});
                g2.setPaint(paint);
                g2.fill(getForma(g2));

                break;
            }
            case CURVE:{
                double bulletWidth = getWidth();
                double bulletHeight = getHeight();

                Ellipse2D curve = new Ellipse2D.Double(-20, bulletHeight / 2.0,
                                                       bulletWidth+20*2, bulletHeight);

                Color startColor = getBackground().darker();
                Color endColor = getBackground().brighter();

                Paint paint = g2.getPaint();
                g2.setPaint(new GradientPaint(0.0f, 0.0f, startColor,
                                              0.0f, (float) bulletHeight/2, endColor));
                g2.fill(getForma(g2));

                startColor =getBackground().darker().darker();
                endColor = getBackground().brighter();
                g2.setPaint(new GradientPaint(0.0f,(float)getHeight()/2 , startColor,
                                              0.0f, (float) bulletHeight, endColor));

                Area area = new Area(getForma(g2));
                area.intersect(new Area(curve));
                g2.fill(area);

                g2.setPaint(paint);

                break;
            }
            case CURVE_2:{

                Ellipse2D curve = new Ellipse2D.Double( -getWidth()/2, 0,
                                                       getWidth(), getHeight()*2);

                Color startColor = getBackground().darker();
                Color endColor = getBackground().brighter();

                Paint paint = g2.getPaint();
                g2.setPaint(new GradientPaint(0.0f, 0.0f, startColor,
                                              0.0f, (float) getHeight()/2, endColor));
                g2.fill(getForma(g2));

                startColor =getBackground().darker().darker();
                endColor = getBackground().brighter();
                g2.setPaint(new GradientPaint(0.0f,(float)getHeight()/2 , startColor,
                                              0.0f, (float) getHeight(), endColor));

                Area area = new Area(getForma(g2));
                area.intersect(new Area(curve));
                g2.fill(area);

                g2.setPaint(paint);

                break;
            }
            case CURVE_3:{

                Ellipse2D curve = new Ellipse2D.Double(-20, -getHeight()/ 2.0,
                                                       getWidth()+20*2, getHeight());

                Color startColor = getBackground().darker();
                Color endColor = getBackground().brighter();

                Paint paint = g2.getPaint();
                g2.setPaint(new GradientPaint(0.0f, 0.0f, startColor,
                                              0.0f, (float) getHeight()/2, endColor));
                g2.fill(getForma(g2));

                startColor =getBackground().darker().darker();
                endColor = getBackground().brighter();
                g2.setPaint(new GradientPaint(0.0f,0f, startColor,
                                              0.0f, (float) getHeight()/2, endColor));

                Area area = new Area(getForma(g2));
                area.intersect(new Area(curve));
                g2.fill(area);

                g2.setPaint(paint);

                break;
            }
            case CURVE_4:{

                Ellipse2D curve = new Ellipse2D.Double( getWidth()/2, 0,
                                                       getWidth()*2, getHeight()*2);

                Color startColor = getBackground().darker();
                Color endColor = getBackground().brighter();

                Paint paint = g2.getPaint();
                g2.setPaint(new GradientPaint(0.0f, 0.0f, startColor,
                                              0.0f, (float) getHeight()/2, endColor));
                g2.fill(getForma(g2));

                startColor =getBackground().darker().darker();
                endColor = getBackground().brighter();
                g2.setPaint(new GradientPaint(0.0f,(float)getHeight()/2 , startColor,
                                              0.0f, (float) getHeight(), endColor));

                Area area = new Area(getForma(g2));
                area.intersect(new Area(curve));
                g2.fill(area);

                g2.setPaint(paint);

                break;
            }
        }

    }