🔥 Articles, eBooks, Jobs, Columnist, Forum, Podcasts, Courses 🎓



Zoom e rotacionar imagem usando C# e ASP.NET

                Olá pessoal, eu vou falar neste artigo como desenvolver funcionalidades para girar e fazer zoom na imagem. Neste artigo eu uso classes em CSS e envio de comandos usando a linguagem de programação C#. Nenhum JavaScript foi utilizado para rotacionar ou dar zoom na imagem.


                No final desse artigo, você estará apto a trabalhar com imagem no seu site ou sistema, usando a solução informada aqui.


Requisito:

Ferramenta de desenvolvimento: Visual Studio

Linguagem utilizada: C#

Estilo: CSS

 

                Toda a solução que vira imagem e faz o zoom, em resumo, é usado CSS chamado pela linguagem C#.


Primeiro exemplo


                No modo greal a ideia é simples e ao mesmo tempo não utiliza de recursos em JavaScript. O JavaScript tem sido pesado para alguns desenvolvedores esses dias. Lembro a todos que, quem puder estudar mais sobre a linguagem de interpretação JavaScript, faça isso porque a linguagem JavaScript junto com CSS3 se torna muito poderoso.


                A imagem 1 mostra o primeiro passo que precisa ser feito, por exemplo: colocar os botões de girar, zoom mais e zoom menos. Colocar uma imagem para teste e com ela vamos trabalhar.


Zoom menos


Imagem 1 – Tela HTML

O zoom menos é o primeiro botão começando da esquerda para a direita. Para programar essa funcionalidade vamos começar do CSS. Listagem 1.

Listagem 1 – Fazendo HTML e CSS da página.
< !DOCTYPE html >
< html xmlns="http://www.w3.org/1999/xhtml" >
< head runat="server" >
< style >
        .zoomMenos70
        {
             zoom: 70%;
            -moz-transform: scale(0.70);
            -webkit-transform: scale(0.70);
        }
        .zoomMenos50
        {
             zoom: 50%;
            -moz-transform: scale(0.50);
            -webkit-transform: scale(0.50);
            -ms-transform: scale((1.49);
        }
        .zoomMenos30
        {
             zoom: 30%;
            -moz-transform: scale(0.30);
            -webkit-transform: scale(0.30);
            -ms-transform: scale((1.49);
        }
    < /style >


Note que na listagem 1 existem comandos funcionando para os três browsers. O primeiro comando zoom usando o CSS3 mais atual. Os outros se dividem pelos outros browsers como Firefox e Internet Explorer. 

O zoom de 30% equivale a escala de 0.30 nos outros comandos como –moz-transform e –webkit-transform. O zoom menos diminui de 70 para 50 e depois 30 porcento, isto é, são 3 zoom menos. Isso pode ser programado por você quantas vezes quiser, pode ser de 10 em 10 até chegar a zero. Na minha opinião, acho que não é necessário.

Passando agora para o corpo do documento HTML, coloquei o botão image, uma div e uma imagem dentro da div. Listagem 2.

Listagem 2 – Mostrando o corpo da página
< body >
    < form id="form1" runat="server" >
    < div align="center" style="text-align:center;" >
        < asp:ImageButton ImageUrl="botoes/zoomout_d.png" ID="cmdZoom" OnClick="cmdZoom_Click" runat="server" / >
    < /div >
    < br / >< br / >< br / >< br / >< br / >< br / >
    < div id="divImagem" runat="server" >
        < img src="imagem.png" runat="server" id="img1" / >
    < /div >
    < /form >
< /body >


O objeto botão tem o nome chamado cmdZoom. O div com nome divImagem, possui a tag runat=server e dentro dela um objeto de imagem chamada img1. No clique do botão, é atribuído a classe para a div e não para a imagem. Quem vira é a div e não a imagem mas você pode usar qualquer objeto. Veja a listagem 3 mostrando o código de zoom menos.

Listagem 3 – Código C#

        protected void cmdZoom_Click(object sender, ImageClickEventArgs e)

        {

            if (divImagem.Attributes["class"] == null)

                divImagem.Attributes["class"] = "zoomMenos70";

            else if (divImagem.Attributes["class"].Equals("zoomMenos70"))

                divImagem.Attributes["class"] = "zoomMenos50";

            else if (divImagem.Attributes["class"].Equals("zoomMenos50"))

                divImagem.Attributes["class"] = "zoomMenos30";

            else

                divImagem.Attributes["class"] = "zoomMenos70";

        }



O clique do botão verifica na primeira linha se o atributo class está nulo, se tiver, ele atribui uma classe a div chamada zoomMenos70. Senão, verifica se for o zoomMenos70 e então atribui o zoomMenos50 e assim por diante. A imagem 2 mostra que depois de cilcar no botão, a imagem diminuiu bem.



Imagem 2 – Zoom menos

Zoom mais

O próximo passo é mostrar como dar zoom na imagem ou no div adicionados anteriormente. Vou colocar 3 níveis de zoom, com o objetivo aumentar a imagem mantendo a qualidade. Acrescentei mais 3 métodos no CSS para os níveis de zoom. Veja a listagem 4.

Listagem 4 – Aumentando imagem
< style >
        .zoomMais100
        {
             zoom: 100%;
            -moz-transform: scale(1.00);
            -webkit-transform: scale(1.00);
        }
        .zoomMais149
        {
             zoom: 149%;
            -moz-transform: scale(1.49);
            -webkit-transform: scale(1.49);
        }
        .zoomMais210
        {
             zoom: 210%;
            -moz-transform: scale(2.10);
            -webkit-transform: scale(2.10);
        }
< /style >


Note que em cada classe style existe um número de zoom, usado do mesmo jeito que o zoom menos, só que pra mais. Lembro que dessa forma a imagem não desconfigura e não perde a qualidade. Se você colocar o zoom na imagem usando width, pode acontecer de perder a qualidade sem volta ou só depois que carregar a imagem novamente.

Depois do style, falta o botão para acionar os comandos. Adicionei mais um imageButton dentro do div. Veja a listagem 5.


Listagem 5 – Adicionando o botão de zoom mais
< div align="center" style="text-align:center;" >
< asp:ImageButton ImageUrl="botoes/zoomout_d.png" ID="cmdZoom" OnClick="cmdZoom_Click" runat="server" / >
< asp:ImageButton ImageUrl="botoes/zoomin_d.png" ID="cmdZoomM" OnClick="cmdZoomM_Click" runat="server" / >
< /div >



O comando OnClick gerou um método chamado “cmdZoomM_Click”. Toda vez que clicar nesse botão, o método será chamado. Veja a listagem 6.

Listagem 6 – Método de zoom mais

protected void cmdZoomM_Click(object sender, ImageClickEventArgs e)

        {

            if (divImagem.Attributes["class"] == null)

                divImagem.Attributes["class"] = "zoomMais100";

            else if (divImagem.Attributes["class"].Equals("zoomMais100"))

                divImagem.Attributes["class"] = "zoomMais149";

            else if (divImagem.Attributes["class"].Equals("zoomMais149"))

                divImagem.Attributes["class"] = "zoomMais210";

            else

                divImagem.Attributes["class"] = "zoomMais100";

        }


Na listagem 6, a primeira linha verifica se o atributo class é nulo, se for ele atribui para a div a classe “zoomMais100”. Se for o “zoomMais100”, então o ele chama o 149 e depois o 210. Cada método desse aumenta o tamnho da div e consequentemente a image. Veja a imagem 3.






Imagem 3 – Dando zoom na imagem

Rotacionar

Agora é a vez do último botão, o que rotaciona a imagem. Para isso criei um botão na parte html (imageButton) e algumas classes em style. Vou começar mostrando a primeira parte do style.  Veja a listagem 7.

Listagem 7 – Style para rotacionar

.rotacionar270

        {

            -webkit-transform: rotate(270deg);

            -moz-transform: rotate(270deg);

            filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);

            -ms-transform: rotate(270deg);

        }

        .rotacionar180

        {

            -webkit-transform: rotate(180deg);

            -moz-transform: rotate(180deg);

            filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);

            -ms-transform: rotate(180deg);

        }

        .rotacionar90

        {

            -webkit-transform: rotate(90deg);

            -moz-transform: rotate(90deg);

            filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);

            -ms-transform: rotate(90deg);

        }

        .rotacionar0

        {

            -webkit-transform: rotate(0deg);

            -moz-transform: rotate(0deg);

            filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0);

            -ms-transform: rotate(0deg);

        }


Para rotacionar um objeto em tela, no nosso caso uma imagem, são usados outros comandos como rotate, rotation e ms-transform. A última linha de cada classe, o chamado filter e ms-transform serve para o browser Internet Explorer. Dessa forma temos outras linhas de funcionamento em todos os browsers. 

Agora falta adicionar o objeto imageButton e programá-lo para chamar as classes style.  Veja a listagem 8.

Listagem 8 – Último botão de rotacionar
< div align="center" style="text-align:center;" >
        < asp:ImageButton ImageUrl="botoes/zoomout_d.png" ID="cmdZoom" OnClick="cmdZoom_Click" runat="server" / >
        < asp:ImageButton ImageUrl="botoes/zoomin_d.png" ID="cmdZoomM" OnClick="cmdZoomM_Click" runat="server" / >
        < asp:ImageButton ImageUrl="botoes/rotate-clockwise_d.png" ID="cmdRotacionar" OnClick="cmdRotacionar_Click" runat="server" / >
    < /div >


O nome do objeto colocado chama “cmdRotacionar” e ao clicar o método criado é o “cmdRotacionar_Click”. Note que cada botão existe uma imagem associada de acordo com o nosso HTML/C#. Veja a listagem 9.

Listagem 9 – Botão rotacionar
protected void cmdRotacionar_Click(object sender, ImageClickEventArgs e)
        {
            if (img1.Attributes["class"] == null)
                img1.Attributes["class"] = "rotacionar90";
            else if (img1.Attributes["class"].Equals("rotacionar90"))
                img1.Attributes["class"] = "rotacionar180";
            else if (img1.Attributes["class"].Equals("rotacionar180"))
                img1.Attributes["class"] = "rotacionar270";
            else if (img1.Attributes["class"].Equals("rotacionar270"))
                img1.Attributes["class"] = "rotacionar0";
            else if (img1.Attributes["class"].Equals("rotacionar0"))
                img1.Attributes["class"] = "rotacionar90";
            else
                img1.Attributes["class"] = "rotacionar90";
        }

A listagem 9 mostra a mesma ideia dos outros métodos, só que agora chamando as classes styles que rotacionam. Cada clique o atributo é verificado da classe e depois a mudança é realizada. Se for a de 90 ele chama a 180, se for for 270 ele chama outra e assim sucessivamente. Bom, fico por aqui.

A imagem 4 mostra que a imagem rotacionou sem qualquer problema. 


Imagem 4 – Rotacionando imagem

Lembro a todos que, com a mudança constante dos browsers, esse comandos em CSS podem mudar. Nem todos os browsers utilizam o padrão W3C e esses comandos devem ser testados.

Espero que tenha gostado e entendido, qualquer dúvida pode entrar em contato pelo site www.mauriciojunior.org


Subscribe ecode10.com

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.

Log In








Top