Quick Dev: Formulários não-retangulares

Formulário não retangular em execução
Formulário não retangular em execução
Olá pessoal!

Este é o primeiro post de uma nova sessão denominada “Quick Dev”. O objetivo desta sessão é explorar rapidamente algumas abordagens de desenvolvimento simples, porém, úteis.   

Se você está se perguntando neste momento: porque estamos abordando questões de desenvolvimento em um blog de arquitetura? Eu recomendo ler o texto de John Davies (não errei na escrita, é Davies mesmo) no livro “97 Things Every Software Architect Should Know”, entitulado como “Architects Must Be Hands On”, onde ele brilhantemente afirma: “Without a good understanding of the full range of technology, an architect is little more than a project manager”.   

Sem mais explicações, vamos ao que interessa. Você sabia que é possível criar formulários não retangulares em uma aplicação windows forms? Pois é, você pode criar um formulário no formato que desejar. Veja a seguir como o código é simples e ao lado o resultado. Note que alterei a cor de fundo do formulário e que acrescentei um botão para fechar, uma vez que os controles padrão do formulário não aparecem neste formato.     

Public Class NonRetangularForm

    Private Sub NonRetangularForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Cria-se um objeto path
        Dim myPath As New System.Drawing.Drawing2D.GraphicsPath
        'Adiciona-se o formato desejado ao Path. Este formato pode ser um polígono,
        'formato de pizza, elipse, e diversos outros formatos interessantes.
        myPath.AddEllipse(0, 0, Me.Width, Me.Height)
        'Cria-se uma região com base no formato criado
        Dim myRegion As New Region(myPath)
        'Associa-se a região ao formulário, fazendo com que ele
        'assuma a região defina no objeto no seu carregamento.
        Me.Region = myRegion
    End Sub

    Private Sub btnFechar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles brnFechar.Click
        Me.Close()
    End Sub

End Class

 

Posts Similares

  • Quick Dev: Melhorando a performance de aplicações ASP .NET

    Olá pessoal! Quem nunca se incomodou com o tempo levado para a recompilação de aplicações ASP .NET já publicadas? Pois é, cada vez que um arquivo “top-level” é alterado em sua aplicação ASP .NET, por padrão, toda a compilação do site feita no seu primeiro acesso é invalidada, causando uma recompilação no próximo acesso. São…

  • Quick Dev: Behind LINQ to SQL

    Você que já utiliza o LINQ to SQL já deve ter tido a curiosidade de saber como as suas consultas LINQ são transformadas em comandos SQL e principalmente, qual a estrutura destes comandos SQL. Como o LINQ to SQL gera um comando SQL para atualizar apenas um registro em uma tabela? Ele utiliza sua chave primária na clausula WHERE? Acredito que estas sejam questões muito importantes para nos embasarmos quando tivermos que decidir pela sua utilização ou estabelecermos os cenários em que podemos aplicá-lo. No artigo anterior dei um overview sobre o LINQ. Neste artigo conceituo o provider LINQ to SQL e demonstro como suas consultas LINQ são transformadas em comandos SQL.

  • AppFabric Caching Services

    Olá pessoal, Em fevereiro de 2011 foi publicado mais um artigo que escrevi para a revista .net Magazine, em sua edição de número oitenta e dois. Com o título “AppFabric Caching Services – Funcionalidades, instalação, configuração e utilização” o artigo complementa um outro artigo publicado anteriormente na edição sessenta e nove (veja o post aqui),…

  • Asp .Net MVC 3.0

    Olá pessoal! Neste post gostaria de deixar registrada uma recomendação para quem quer começar a estudar o ASP .NET MVC 3.0 e que de quebra também quer aprender algumas novidades do Visual Studio 2010. Trata-se de um tutorial criado por Scott Hanselman no site ASP .NET (www.asp.net): Getting Started with MVC3, que traz um passo-a-passo…

  • Quick Dev: Connection Pooling

    Olá pessoal!  Continuando a série Quick Dev, neste artigo vou falar um pouco sobre pooling de conexões em uma aplicação .NET.  Para começar, a seguir temos uma definição simples de pool de conexões: trata-se de um cache de conexões de banco de dados, mantidas de forma que possam ser reutilizadas quando futuras requisições são necessárias. Em uma aplicação .NET…

Deixe um comentário