Array
(
)

Problemas!!!

Fagnerx21
   - 16 nov 2008

Olá a todos,eu estou com alguns problemas,não estou conseguindo instanciar minha classe,minha classe está em uma pasta e o aspx está em outra pasta,queria ver com voces se está correto o que eu fiz,por favor,olhem e me digam se está correto,caso não,corrijam:

Classe:
#Código

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.CSharp;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;

namespace Captcha
{
    /// <summary>
    /// Classe Captcha:Gera uma imagem com um caracteres aleatórios para fazer a validação por imagem.
    /// </summary>
    public class Captcha
    {
        //Propriedades
        public String Texto
        {
            get { return this.m_texto; }
        }
        public Bitmap Imagem 
        {
            get { return this.m_imagem; }
        }
        public int Largura
        {
            get { return this.m_largura; }
        }
        public int Altura
        {
            get { return this.m_altura; }        
        }

        //Implementação das propriedades
        private string m_texto;
        private int m_largura;
        private int m_altura;
        private string fonte;
        private Bitmap m_imagem;

        //Para gerar valores aleatórios
        private Random Aleatorio = new Random();
        
        //Gera uma nova instância da classe Captcha usando os atributos texto, largura e altura
        public Captcha(string s, int largura, int altura) 
        {
            this.m_texto = s;
            this.ConfiguraTamanho(largura, altura);
            this.GeraImagem();
        }
        //Gera uma nova instância da classe Captcha usando os atributos texto, largura, altura e fonte
        public Captcha(string s, int largura, int altura, string fonte)
        {
            this.m_texto = s;
            this.ConfiguraTamanho(largura, altura);
            this.ConfiguraFonte(fonte);
            this.GeraImagem();
        }
        ~Captcha()
        {
            Dispose(false);
        }
        //Libera todos os recursos utilizados por esse objeto
        public void Dispose()
        {
            GC.SuppressFinalize(this);
            this.Dispose(true);
        }
        //Limpa recursos restados
        protected virtual void Dispose(bool disposing)
        {
            if(disposing)
            {
                //Limpa a imagem
                this.m_imagem.Dispose();
            }
        }
        //Configura a largura e a altura da imagem
        private void ConfiguraTamanho(int largura, int altura)
        {
            //Verifica a largura e altura
            if(largura <= 0)
            {
                throw new ArgumentOutOfRangeException("largura", largura, "Valor incorreto, precisa ser maior que 0 !");
            }
            if(altura <= 0)
            {
                throw new ArgumentOutOfRangeException("altura", altura, "Valor incorreto, precisa ser maior que 0 !");
            }
            this.m_largura = largura;
            this.m_altura = altura;
        }
        //Configura a fonte do texto exibido na imagem
        private void ConfiguraFonte(string fonte)
        {
            //Se a fonte escolhida não existir então utiliza uma fonte padrão
            try
            {
                Font font = new Font(this.fonte, 12f);
                this.fonte = fonte;
                font.Dispose();
            }
            catch(Exception ex)
            {
                this.fonte = System.Drawing.FontFamily.GenericSerif.Name;
            }
        }
        //Cria uma imagem bitmap
        private void GeraImagem()
        {
            //Cria uma nova imagem bitmap de 32 bits
            Bitmap bitmap = new Bitmap(this.m_largura, this.m_altura, PixelFormat.Format32bppArgb);
            //Cria uma objeto gráfico para desenho
            Graphics g = Graphics.FromImage(bitmap);
            g.SmoothingMode = SmoothingMode.AntiAlias;
            Rectangle ret = new Rectangle(0, 0, this.m_largura, this.m_altura);
            //Preenche o fundo da imagem
            HatchBrush hb = new HatchBrush(HatchStyle.SmallConfetti, Color.LightGray, Color.White);
            g.FillRectangle(hb, ret);
            //Configura a fonte do texto
            SizeF sf = default(SizeF);
            float fonteTamanho = ret.Height + 1;
            Font font = default(Font);
            //Ajusta o tamanho da fonte até que o texto se encaixe com a imgem
            do 
            {
                fonteTamanho -= 1;
                font = new Font(this.fonte, fonteTamanho, FontStyle.Bold);
                sf = g.MeasureString(this.m_texto, font);
            }
            while(sf.Width > ret.Width);
            //Configura o formato do texto
            StringFormat formato = new StringFormat();
            formato.Alignment = StringAlignment.Center;
            formato.LineAlignment = StringAlignment.Center;
            //Cria um caminho usando o texto e posicionando-o aleatoriamente
            GraphicsPath caminho = new GraphicsPath();
            caminho.AddString(this.m_texto, this.fonte, (int)font.Style, font.Size, ret, formato);
            float v = 4f;
            PointF[] pf = {new PointF(this.Aleatorio.Next(ret.Width) / v, this.Aleatorio.Next(ret.Height) / v), new PointF(ret.Width - this.Aleatorio.Next(ret.Width) / v, this.Aleatorio.Next(ret.Height) / v), new PointF(this.Aleatorio.Next(ret.Width) / v, ret.Height - this.Aleatorio.Next(ret.Height) / v), new PointF(ret.Width - this.Aleatorio.Next(ret.Width) / v, ret.Height - this.Aleatorio.Next(ret.Height) / v) };
            Matrix matrix = new Matrix();
            matrix.Translate(0f, 0f);
            caminho.Warp(pf, ret, matrix, WarpMode.Perspective, 0f);
            //Desenha o texto
            hb = new HatchBrush(HatchStyle.LargeConfetti, Color.LightGray, Color.DarkGray);
            g.FillPath(hb, caminho);
            //Adiciona um efeito aleatório
            int m = Math.Max(ret.Width, ret.Height);
            for(int i = 0; i <= (int)(ret.Width * ret.Height / 30f) - 1; i++) 
            {
                int x = this.Aleatorio.Next(ret.Width);
                int y = this.Aleatorio.Next(ret.Height);
                int w = this.Aleatorio.Next(m / 50);
                int h = this.Aleatorio.Next(m / 50);
                g.FillEllipse(hb, x, y, w, h);
            }
            //Limpa
            font.Dispose();
            hb.Dispose();
            g.Dispose();
            //Coloca a imagem
            this.m_imagem = bitmap;
        }
        private string GeraCodigoAleatorio()
        {
            //Retorna uma string de 7 digitos aleatórios
            string s = "";
            for (int i = 0; 1 <= 6; i++)
            {
                s = string.Concat(s, this.Aleatorio.Next(10).ToString());
            }
            retirn s;
        }
        private bool VerificaCaptcha()
        {
            //Verifica se o que foi digitado equivale ao valor da imagem
            if (txtCodigoCaptcha.text == Session("CaptchaImageText").ToString())
            {
                //Exibe uma mensagem de aviso
                lblCaptchaMsg.text = "Código Correto.";
                return true;
            }
            else
            {
                //Exibe uma mensagem de erro
                lblCaptchaMsg.text = "Código Incorreto.";
                //Limpa o campo e cria um novo codigo aleatorio
                txtCodigoCaptcha.text = "";
                Session("CaptchaImageText") = GeraCodigoAleatorio();
                return false;
            }
        }
    }
}


ImagemCaptcha.aspx
#Código
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;

public partial class Web_ImagemCaptcha : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Cria uma imagem Captcha usando o texto armazenado na sessão
        Captcha.Captcha c = new Captcha.Captcha(this.Session("CaptchaImageText").ToString(), 200, 50, "E-Shopping");
        //Altera a resposta do header para a saida de imagem JPEG
        this.Response.Clear();
        this.Response.ContentType = "image/jpeg";
        //Escreve a imagem no stream de resposta no formato jpeg
        c.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
        //Libera o objeto imagem captcha
        c.Dispose();
    }
}


Cadastro.aspx
#Código
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Cadastro : System.Web.UI.Page
{
    //Cria um codigo aleatorio que será armazenado na sessão
    private Random Aleatorio = new Random();

    protected void Page_Load(object sender, EventArgs e)
    {
        Captcha.Captcha = new Captcha.Captcha();
        if(Page.IsPostBack == false)
        {
            this.Session("CaptchaImageText") = Captcha.GeraCodigoAleatorio();
        }
        else
        {
            Captcha.VerificaCaptcha();
        }
    }
}

O outro problema é com o meu visual studio 2005,quando arrasto um componente html para o web form ou quando eu crio um table ele está gerando no código as tags em UCase e não LCase como era pra ser,pois por exemplo <td> é o certo mas ele gera <TD> e assim o xhtml validation dá erro pois essa tag não existe,dae eu tenho que teclar ctrl + h e dar um replace all mudando pra tag certa,mas quando eu executo o web site pra teste e dou um stop depois de ter testado as tags voltam a ficar maiusculas ,eu fui lá nas opções de validation e formating e o engraçado é que lá em client tags tá como lowercase ,como eu resolvo isso? pois é um saco ficar ter que mudando a cada execução e ficar vendo cento e trinta e poucos erros de html
PS:Estou usando o asp.net ajax framework,isso influencia em algo?
Por favor,eu suplico, me ajudem.