Arquivo da tag: Windows Forms

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