Dando continuidade em nosso mini curso de System.Drawing vamos ver como desenhar um retângulo em uma imagem.
Para baixar o fonte deste artigo, clique aqui.
Desenhar um retângulo é o método mais fácil para começarmos a falar de desenho e para isso precisamos de 6 informações básicas.
- Posição X
- Posição Y
- Largura
- Altura
- Cor do Fundo
- Cor da Borda
No arquivo desse post você irá encontrar o código exato para esses dados, pois vamos nos atentar especificamente no método principal para o desenho do retângulo.
Você pode também consultar o post sobre teorías de System.Drawing clicanco aqui.
Enfim, vamos ao que interessa e código na jogada.
Primeiramente nosso método recebe a Largula, Altura, Cor de Fundo e Cor da Borda do Retângulo. Estamos assumindo que a posição do mesmo na imagem será 0×0 (ou seja, 0px na horizontal e 0px na vertical).
Nosso método cria 2 objetos: O Bitmap que realmente contém a imagem e o Graphics que nos permite iteragir dinâmicamente na imagem, em nosso caso criando um retângulo.
Criamos o Bitmap com a Largura e Altura que desejamos que nosso desenho tenha (neste exemplo a largura e altura do Bitmap são as mesmas do retângulo).
Criamos o Graphics a partir do Bitmap.
Agora, iremos desenhar o retângulo contendo o fundo já preenchido no método (FillRectangle) passando um SolidBrush com a Cor do Fundo, na posição 0×0, com a Largura e Altura definidas.
O SolidBrush informa do .NET e por conseqüencia ao GDI+ que queremos um fundo sólido (você pode usar Brush de textura, gradiente, etc).
Após isso, desenhamos a borda do retângulo com o método (DrawRectangle) que desenha um retângulo sem fundo. Note que como não tem fundo usamos uma Pen (caneta) com a espessura de 1px na cor da borda.
Por fim, retornamos um Bitmap baseado em nosso Bitmap original. Isso é válido neste exemplo pois o Bitmap original (newBMP) irá desaparecer após a finalização do método graças ao uso da interface (IDisposable) que é chamada automáticamente pelo uso do (using). Para saber mais sobre o (using) clique aqui.
Enfim, o código central do post e do arquivo de demonstração é apresentado abaixo:
/// <summary>
/// Monta o Bitmap com um Retângulo
/// </summary>
/// <param name="width">Largura da Imagen</param>
/// <param name="height">Altura da Imagem</param>
/// <param name="bgColor">Cor do Fundo</param>
/// <param name="borderColor">Cor da Borda</param>
/// <returns></returns>
private System.Drawing.Image BuildImage(int width, int height, System.Drawing.Color bgColor, System.Drawing.Color borderColor)
{
// Cria Objetos
System.Drawing.Bitmap newBMP;
System.Drawing.Graphics graphics;
// Cria o Bitmap
using (newBMP = new System.Drawing.Bitmap(width, height))
{
// Cria o Graphics para Editar o Conteúdo do Bitmap
using (graphics = System.Drawing.Graphics.FromImage(newBMP))
{
// Desenha o Retangulo já Preenchido
graphics.FillRectangle(new System.Drawing.SolidBrush(bgColor), 0, 0, width, height);
// Desenha a Borda
graphics.DrawRectangle(new System.Drawing.Pen(borderColor, 1), 0, 0, width - 1, height - 1);
// Retorna
return System.Drawing.Bitmap.FromHbitmap(newBMP.GetHbitmap());
}
}
}
Posts Relacionados:



Be the first to start a conversation