Canetas, linhas e retângulos

Para desenhar linhas com o Windows GDI+ você precisa criar um objeto Graphics e um objeto Pen . O objeto Graphics fornece os métodos que realmente fazem o desenho e o objeto Pen armazena atributos da linha, como cor, largura e estilo. Desenhar uma linha é simplesmente uma questão de chamar o método DrawLine do objeto Graphics . O endereço do objeto Pen é passado como um dos argumentos para o método DrawLine. O exemplo a seguir desenha uma linha do ponto (4, 2) para o ponto (12, 6).

myGraphics.DrawLine(&myPen, 4, 2, 12, 6);

DrawLine é um método sobrecarregado da classe Graphics, portanto, há várias maneiras de fornecê-lo com argumentos. Por exemplo, você pode construir dois objetos Point e passar referências para os objetos Point como argumentos para o método DrawLine.

Point myStartPoint(4, 2);
Point myEndPoint(12, 6);
myGraphics.DrawLine(&myPen, myStartPoint, myEndPoint);

Você pode especificar determinados atributos ao construir um objeto Pen . Por exemplo, um construtor de caneta permite que você especifique a cor e a largura. O exemplo a seguir desenha uma linha azul de largura 2 de (0, 0) a (60, 30).

Pen myPen(Color(255, 0, 0, 255), 2);
myGraphics.DrawLine(&myPen, 0, 0, 60, 30);

O objeto Pen também tem atributos, como estilo de traço, que você pode usar para especificar recursos da linha. Por exemplo, o exemplo a seguir desenha uma linha tracejada de (100, 50) para (300, 80).

myPen.SetDashStyle(DashStyleDash);
myGraphics.DrawLine(&myPen, 100, 50, 300, 80);

Você pode usar vários métodos do objeto Pen para definir muitos outros atributos da linha. Os métodos Pen::SetStartCap e Pen::SetEndCap especificam a aparência das extremidades da linha; as extremidades podem ser planas, quadradas, arredondadas, triangulares ou uma forma personalizada. O método Pen::SetLineJoin permite especificar se as linhas conectadas são miteradas (unidas com cantos afiados), biseladas, arredondadas ou recortadas. A ilustração a seguir mostra linhas com vários estilos de extremidade e junção.

ilustração de duas linhas demonstrando extremidades arredondadas e circulares, cantos arredondados e miterados e dois estilos de seta

Os retângulos de desenho com GDI+ são semelhantes às linhas de desenho. Para desenhar um retângulo, você precisa de um objeto Graphics e um objeto Pen . O objeto Graphics fornece um método DrawRectangle e o objeto Pen armazena atributos, como largura e cor da linha. O endereço do objeto Pen é passado como um dos argumentos para o método DrawRectangle. O exemplo a seguir desenha um retângulo com seu canto superior esquerdo em (100, 50), uma largura de 80 e uma altura de 40.

myGraphics.DrawRectangle(&myPen, 100, 50, 80, 40);

DrawRectangle é um método sobrecarregado da classe Graphics, portanto, há várias maneiras de fornecê-lo com argumentos. Por exemplo, você pode construir um objeto Rect e passar uma referência ao objeto Rect como um argumento para o método DrawRectangle.

Rect myRect(100, 50, 80, 40);
myGraphics.DrawRectangle(&myPen, myRect);

Um objeto Rect tem métodos para manipular e coletar informações sobre o retângulo. Por exemplo, os métodos Inflate e Offset alteram o tamanho e a posição do retângulo. O método Rect::IntersectsWith informa se o retângulo cruza outro retângulo fornecido e o método Contains informa se um determinado ponto está dentro do retângulo.