Partilhar via


Elementos gráficos para usuários do Visual Basic 6.0

No Visual Basic 6.0, vários métodos gráficos e propriedades são usadas para desenhar em um Form ou PictureBox controle. Elementos gráficos no Visual Basic 6.0 são baseados no Windows Graphics Device Interface (GDI) APIs.

In Visual Basic 2008, elementos gráficos são fornecidos pela System.Drawing namespace, que encapsula GDI + APIs. GDI + expande nos recursos gráficos do Visual Basic 6.0, embora os métodos sejam não compatíveis.

Diferenças Conceituais

No Visual Basic 6.0, métodos gráficos aplicar somente para o Form objeto e o PictureBox controle.

In Visual Basic 2008, métodos gráficos aplicar para formulários, além de qualquer controle que suporte o Paint evento, incluindo o PictureBox, Panel, e GroupBox controles. Além disso, métodos gráficos aplicam-se a todos os controles que suportam o OwnerDraw propriedade, incluindo o ListView, TreeView, e Button controles.

Propriedade AutoRedraw

No Visual Basic 6.0, métodos podem ser chamados de qualquer procedimento de evento gráficos; o AutoRedraw propriedade é usada para persistir os elementos gráficos quando métodos gráficos forem chamados de um evento que seja diferente de Paint evento.

In Visual Basic 2008, métodos gráficos só devem ser chamados da Paint procedimento de evento, ou no caso de alguns controles desenhados pelo proprietário, de vários Draw () procedimentos de eventoDrawItem, DrawSubItemetc..). The AutoRedraw propriedade não é mais suportada e não é necessária porque o Paint e Draw eventos automaticamente persistem elementos gráficos.

Propriedade ClipControls

No Visual Basic 6.0, a ClipControls propriedade é usada para controlar a pintura de um formulário ou controle. Quando conjunto para True, somente áreas recém-expostas são redesenhadas, em teoria, melhorando o desempenho.

Não há nenhum equivalente para o ClipControls propriedade no Visual Basic 2008; aprimoramentos de desempenho em GDI + e adaptadores de vídeo atualizados tornam isso desnecessário.

Propriedade DrawMode

No Visual Basic 6.0, a DrawMode propriedade controla a cor de um objeto gráfico ao desenhar um padrão em cima da outra. Esta propriedade afeta somente resolução monocromática ou baixa-resolução (256 cores ou menos).

Não há nenhum equivalente para o DrawMode propriedade no Visual Basic 2008; não é mais necessário com exibições corrente.

Propriedade DrawStyle

No Visual Basic 6.0, a DrawStyle propriedade controla a aparência de uma linha desenhada usando o Line método. Se o DrawWidth propriedade é definida como um valor maior que 1, o DrawStyle propriedade não terá nenhum efeito e sempre a linha será sólida.

In Visual Basic 2008, a aparência de uma linha é controlada configurando a DashStyle propriedade de um System.Drawing.Pen classe usada por um do DrawLine métodos; linha largura tem não relação com essa propriedade.

Propriedade DrawWidth

No Visual Basic 6.0, a DrawWidth propriedade determina a espessura de uma linha em pixels; o DrawWidth propriedade costuma conjunto antes de executar um método de gráfico.

In Visual Basic 2008, o Pen.Width propriedade de um System.Drawing.Pen controle determina a espessura da linha; você pode conjunto o Width a propriedade sistema autônomo um parâmetro ao criar o Pen, ou definindo Pen.Width Depois que o Pen é criado. Se nenhum Pen.Width propriedade for especificada, o padrão é 1 pixel.

Propriedade Image

No Visual Basic 6.0 o Image propriedade de um formulário ou PictureBox controle retorna um identificador para um bitmap; o identificador pode ser atribuído à Picture propriedade ou usado sistema autônomo um valor para passar para chamadas API do Windows.

In Visual Basic 2008, bitmaps não têm mais identificadores; o próprio bitmap é passado sistema autônomo um objeto do tipo Bitmap. A Bitmap control can be assigned to the Image property of a PictureBox control, but it cannot be passed to Windows API calls.

Método Line

No Visual Basic 6.0, a Line método é usado para desenhar um retângulo, especificando as coordenadas superior e inferiores esquerdas juntamente com um argumento opcional B. The FillColor propriedade é usada para preencher um retângulo com uma cor sólida e o FillStyle propriedade preenche o retângulo com um padrão cruzado.

In Visual Basic 2008, o DrawRectangles método é usado para desenhar a borda de um retângulo e o FillRectangle método é usado para preenchê-lo. FillRectangle leva uma Brush objeto sistema autônomo um parâmetro. The SolidBrush substitui o FillColor propriedade e membros das HatchBrush substituição de classe a FillStyle propriedade.

Método Point

No Visual Basic 6.0, a Point método de um formulário ou PictureBox controle é usado para retornar um valor de cor para o pixel em um ponto especificado. Embora o Point método pode ser usado para formulários ou controles que não contêm um imagem, com mais freqüência é usado para recuperar uma cor de um bitmap atribuído à Picture propriedade.

In Visual Basic 2008, o Point método não existe mais. Você pode usar o M:System.Drawing.Bitmap.GetPixel(System.Int32,System.Int32) método para recuperar um valor de cor de um bitmap. Para formulários ou controles que não contêm uma figura, você pode consultar o BackColor propriedade.

Método Print

No Visual Basic 6.0, a Print método é usado para exibir texto em um formulário ou PictureBox controle. A fonte usada para exibir o texto é determinada pelo Font Propriedades do formulário ou controle e a cor é determinada pela ForeColor propriedade. The Print método não oferece nenhum controle para o local do texto e só pode exibir texto horizontalmente.

In Visual Basic 2008, o DrawString método é usado para exibir texto. A fonte é determinada por um Font objeto e a cor é determinada por um Brush objeto; ambos são passados sistema autônomo parâmetros para o DrawString método. The DrawString método também possui X e Y parâmetros que determinam o local inicial para o texto. Há também um opcional Format parâmetro que leva uma StringFormat objeto, permitindo que você exiba texto verticalmente.

Método Pset

No Visual Basic 6.0, a PSet método é usado para alterar a cor de um pixel em um formulário ou PictureBox controle. Se o DrawWidth propriedade é definida como um valor maior que 1, o PSet método desenha um círculo preenchido. Um parâmetro opcional é usado para especificar a cor; se omitido ForeColor é usado.

In Visual Basic 2008, não há nenhum equivalente para o PSet método. Para alterar a cor de um único pixel em um formulário ou o PictureBox controle, use o DrawEllipse método para desenhar um círculo com altura e largura de 1 pixel. Para duplicar a funcionalidade de PSet Quando DrawWidth é maior que 1, usar o FillEllipse método.

Alterações código para elementos gráficos

Os exemplos de código a seguir ilustram as diferenças nas técnicas de codificação entre o Visual Basic 6.0 e Visual Basic 2008.

Desenhando uma linha simples

O código a seguir demonstra o desenho de uma linha em um formulário em tempo de execução.No exemplo do Visual Basic 6.0, a Line método é usado; ele toma sistema autônomo coordenadas X e Y dos pontos inicial e final e, opcionalmente, a cor sistema autônomo argumentos. The Visual Basic 2008 exemplo usa o DrawLine método, que usa um Pens objeto e sistema autônomo coordenadas X e Y dos pontos sistema autônomo argumentos o inicial e final.

Observação:

Em O Visual Basic 6.0, a unidade de medida padrão é twips; no Visual Basic 2008, ela é pixels.

' Visual Basic 6.0
Private Sub Form_Paint()
    ' Draw a solid black line 200 twips from the top of the form.
    Line (0, 200) - (ScaleWidth, 200), vbBlack
End Sub
' Visual Basic
Private Sub Form1_Paint(ByVal sender As Object, ByVal e _
As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' Draw a solid black line 25 pixels from the top of the form.
    e.Graphics.DrawLine(Pens.Black, 0, 25, Me.Width, 25)
End Sub

Desenhando uma linha pontilhada

O código a seguir demonstra o desenho uma linha pontilhada em um formulário em tempo de execução.No exemplo do Visual Basic 6.0, a DrawStyle propriedade determina a aparência da linha. The Visual Basic 2008 exemplo usa um Pen objeto, defina o DashStyle propriedade para determinar a aparência.

Observação:

No Visual Basic 6.0, o unidade padrão de medida é o twip; no Visual Basic 2008, ela é pixels.

' Visual Basic 6.0
Private Sub Form_Paint()
    ' Draw a dotted line 200 twips from the top of the form.
    Me.DrawStyle = vbDot
    Line (0, 200) - (ScaleWidth, 200), vbBlack
End Sub
' Visual Basic
Private Sub Form1_Paint1(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' Draw a dotted black line 25 pixels from the top of the form.
    Dim LPen As New System.Drawing.Pen(System.Drawing.Color.Black)
    LPen.DashStyle = Drawing2D.DashStyle.Dot
    e.Graphics.DrawLine(LPen, 0, 25, Me.Width, 25)
End Sub

Controlando a Espessura de Linha

O código a seguir demonstra linhas desenho de espessuras diferentes num formulário em tempo de execução.No exemplo do Visual Basic 6.0, a DrawWidth propriedade é usada. The Visual Basic 2008 exemplo usa o Width propriedade das Pens objeto.

' Visual Basic 6.0
Private Sub Form_Paint()
    ' Draw a line with a thickness of 1 pixel.
    DrawWidth = 1
    Line (0, 200)-(ScaleWidth, 200), vbBlack
    ' Draw a line with a thickness of 5 pixels.
    DrawWidth = 5
    Line (0, 400)-(ScaleWidth, 400), vbBlack
    ' Draw a line with a thickness of 10 pixels.
    DrawWidth = 10
    Line (0, 600)-(ScaleWidth, 600), vbBlack
End Sub
' Visual Basic
Private Sub Form1_Paint2(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' Draw a line with a thickness of 1 pixel.
    Dim TPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1)
    e.Graphics.DrawLine(TPen, 0, 25, Me.Width, 25)
    ' Draw a line with a thickness of 5 pixels.
    TPen.Width = 5
    e.Graphics.DrawLine(TPen, 0, 50, Me.Width, 50)
    ' Draw a line with a thickness of 10 pixels.
    TPen.Width = 10
    e.Graphics.DrawLine(TPen, 0, 75, Me.Width, 75)
End Sub

Desenhando um círculo

O código a seguir demonstra como desenhar um círculo num formulário em tempo de execução.No exemplo do Visual Basic 6.0, a Circle método é usado; ele toma sistema autônomo coordenadas X e Y do ponto central, o RADIUS e, opcionalmente, a cor sistema autônomo argumentos. The Visual Basic 2008 exemplo usa o DrawEllipse método, que usa um Pen objeto, sistema autônomo coordenadas X e Y do canto superior esquerdo do retângulo envolvente, a largura e a altura sistema autônomo argumentos.

Observação:

No Visual Basic 6.0, o unidade padrão de medida é o twip; no Visual Basic 2008, ela é pixels.

' Visual Basic 6.0
Private Sub Form_Paint()
    ' Draw a 1000 twip diameter red circle
    Circle (500, 500), 500, vbRed
End Sub
' Visual Basic
Private Sub Form1_Paint3(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' Draw a 70 pixel diameter red circle.
    e.Graphics.DrawEllipse(Pens.Red, 0, 0, 70, 70)
End Sub

Desenhando um Retângulo Preenchido

O código a seguir demonstra o desenho de dois retângulos em um formulário em tempo de execução, um com um preenchimento sólido e o outro com um padrão com riscos diagonais.No exemplo do Visual Basic 6.0, a FillColor e FillStyle propriedades são usadas junto com o Line método. Chamando o Line método com o B parâmetro desenha um retângulo.

The Visual Basic 2008 exemplo usa o Graphics.Rectangle método para desenhar o estrutura de tópicos e o Graphics.FillRectangle método que usa um Brush objeto sistema autônomo um argumento. Neste exemplo ambas SolidBrush e HatchBrush os controles são usados.

Observação:

No Visual Basic 6.0, o unidade padrão de medida é o twip; no Visual Basic 2008 Ela é pixels.

' Visual Basic 6.0
Private Sub Form_Paint()
    ' Draw a solid red rectangle.
    FillColor = vbRed
    FillStyle = vbSolid
    Line (10, 10)- (1000, 500), vbRed, B
    ' Draw a rectangle filled with a crosshatch pattern.
    FillColor = vbBlack
    FillStyle = vbCross
    Line (10, 500)- (1000, 1000), vbBlack, B
End Sub
' Visual Basic
Private Sub Form1_Paint4(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' Draw a solid red rectangle.
    Dim SBrush As New System.Drawing.SolidBrush _
      (System.Drawing.Color.Red)
    e.Graphics.DrawRectangle(Pens.Red, 2, 2, 70, 40)
    e.Graphics.FillRectangle(SBrush, 2, 2, 70, 40)

    ' Draw a rectangle filled with a crosshatch pattern.
    Dim HBrush As New System.Drawing.Drawing2D.HatchBrush( _
      System.Drawing.Drawing2D.HatchStyle.Cross, _
      System.Drawing.Color.Black, System.Drawing.Color.Transparent)
    e.Graphics.DrawRectangle(Pens.Black, 2, 40, 70, 40)
    e.Graphics.FillRectangle(HBrush, 2, 40, 70, 40)
End Sub

Exibindo uma imagem em um formulário

O código a seguir demonstra métodos gráficos para exibir uma imagem em um formulário em tempo de execução.O exemplo do Visual Basic 6.0 usa o PaintPicture método. The Visual Basic 2008 exemplo usa o DrawImage método.

' Visual Basic 6.0
Private Sub Form_Paint()
    ' Create a stdPicture object.
    Dim Pict1 As New stdPicture
    Pict1 = LoadPicture("C:\Windows\Greenstone.bmp")
    PaintPicture Pict1, 0, 0
End Sub
' Visual Basic
Private Sub Form1_Paint5(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' Create a Bitmap object.
    Dim Pict1 As New Bitmap("C:\Windows\Greenstone.bmp")
    e.Graphics.DrawImage(Pict1, 0, 0)
End Sub

Exibindo texto em um formulário

O código a seguir demonstra métodos gráficos para exibir uma string de texto em um formulário em tempo de execução.O exemplo do Visual Basic 6.0 usa o Print método. The Visual Basic 2008 exemplo usa o DrawString método.

' Visual Basic 6.0
Private Sub Form_Paint()
    Me.Font.Size = 24
    Me.Font.Bold = True
    Me.ForeColor = vbRed
    Print "Hello World!"
End Sub
' Visual Basic
Private Sub Form1_Paint6(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    Dim TextFont As New System.Drawing.Font("Arial", 24, FontStyle.Bold)
    Dim TextBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)
    e.Graphics.DrawString("Hello World!", TextFont, TextBrush, 10, 10)
    TextFont.Dispose()
    TextBrush.Dispose()
End Sub

Determinando a Altura e Largura de uma String

O código a seguir demonstra métodos gráficos para determinar o tamanho de uma string em um formulário em tempo de execução, e então desenhar um retângulo ao redor dela.O exemplo do Visual Basic 6.0 usa o TextHeight e TextWidth métodos. The Visual Basic 2008 exemplo usa o MeasureString método, que retorna um SizeF estrutura.

' Visual Basic 6.0
Private Sub Form_Paint()
    Me.Font.Size = 24
    Me.Font.Bold = True
    Me.ForeColor = vbRed
    Print "Hello World!"
    Line (0, 0)-(TextWidth("Hello World!"), _
TextHeight("Hello World!")), vbBlack, B 
End Sub
' Visual Basic
Private Sub Form1_Paint7(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    Dim TextFont As New System.Drawing.Font("Arial", 24, FontStyle.Bold)
    Dim TextBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)
    e.Graphics.DrawString("Hello World!", TextFont, TextBrush, 10, 10)
    Dim TextSize As New System.Drawing.SizeF
    TextSize = e.Graphics.MeasureString("Hello World!", TextFont)
    e.Graphics.DrawRectangle(Pens.Black, 10, 10, TextSize.Width, TextSize.Height)
    TextFont.Dispose()
    TextBrush.Dispose()
End Sub

Desenhando um pixel único

O exemplo a seguir demonstra métodos gráficos para alterar a cor de um único pixel em um formulário em tempo de execução.O exemplo do Visual Basic 6.0 usa o PSet método. The Visual Basic 2008 exemplo usa o DrawEllipse método com o Height e Width conjunto de parâmetros 1.

Observação:    No Visual Basic 6.0, o unidade padrão de medida é o twip; no Visual Basic 2008 Ela é pixels.

' Visual Basic 6.0
Private Sub Form_Paint()
    Me.DrawWidth = 1
    PSet (1000, 1000), vbRed
End Sub
' Visual Basic
Private Sub Form1_Paint8(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    e.Graphics.DrawEllipse(Pens.Red, 70, 70, 1, 1)
End Sub

Determinando a Cor de um Único Pixel

O código a seguir demonstra métodos gráficos para determinar a cor de um pixel em uma local especificado de uma imagem em um formulário em tempo de execução, e então desenhar um retângulo preenchido com a cor.O exemplo do Visual Basic 6.0 usa o Point método para recuperar o valor de cor. The Visual Basic 2008 exemplo usa o GetPixel método.

Observação:

No Visual Basic 6.0 a unidade de medida padrão é twips; no Visual Basic 2008, ela é pixels.

' Visual Basic 6.0
Private Sub Form_Paint()
    Dim PixelColor As Long
    Picture1.Picture = LoadPicture("C:\Windows\Greenstone.bmp")
    PixelColor = Picture1.Point(10, 10)
    FillColor = PixelColor
    Line (0, 0)-(100, 500), PixelColor, B
End Sub
' Visual Basic
Private Sub Form1_Paint9(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    Dim Pict1 As New Bitmap("C:\Windows\Greenstone.bmp")
    Picture1.Image = Pict1
    Dim PixelColor As Color = Pict1.GetPixel(4, 4)
    Dim PixelBrush As New SolidBrush(PixelColor)
    e.Graphics.FillRectangle(PixelBrush, 0, 0, 100, 100)
End Sub

Propriedades Graphicas e Equivalência de Métodos

A tabela a seguir lista propriedades gráficas do Visual Basic 6.0 e métodos, juntamente com seus Visual Basic 2008 equivalentes.

Visual Basic 6,0

Visual Basic 2008 Equivalente a

Propriedade AutoRedraw

Nova implementação.Para persistir os elementos gráficos, coloque métodos gráficos no Paint evento.

Método Circle

Método DrawEllipse

Propriedade ClipControls

Nova implementação.The ClipControls propriedade não é mais necessária.

Método Cls

Método Clear

Propriedade CurrentX

The x parâmetro de vários métodos gráficos. Por exemplo, DrawRectangle(caneta, xy, largura, altura)

Propriedade CurrentY

The y parâmetro de vários métodos gráficos. Por exemplo, DrawRectangle (caneta, x ylargura, altura)

DrawMode Propriedade

Nova implementação.The DrawMode propriedade não é mais necessária.

Propriedade DrawStyle

Propriedade DashStyle

Propriedade DrawWidth

Propriedade Width

Propriedade FillColor

SolidBrush objeto

Propriedade FillStyle

HatchBrush objeto

Propriedade HasDC

Nova implementação.Contextos de dispositivo são não mais necessárias com GDI+.

Propriedade HDC

Nova implementação.Contextos de dispositivo são não mais necessárias com GDI+.

Propriedade Image

Nova implementação.

Método Line

Método DrawLine

Método PaintPicture

Método DrawImage

Método Point

Há equivalente direto.Para bitmaps, use Bitmap.GetPixel. Para formulários ou controles, use o BackColorpropriedade.

Método Print

Método DrawString

Método Pset

DrawEllipse, FillEllipse métodos

TextHeight, TextWidth Propriedades

Método MeasureString

Observações de Atualização

Quando um aplicativo é atualizado do Visual Basic 6.0 para Visual Basic 2008, métodos gráficos não são atualizados e avisos são inseridos no código. Devido às diferenças consideráveis entre GDI e GDI+, qualquer código gráfico existente terá que ser reescrito.

Consulte também

Tarefas

Exemplo de controle do usuário de desenho personalizada

Outros recursos

Overview de elementos gráficos (Windows Forms)

Introdução à programação de gráficos

Sobre a GDI + código gerenciado

Usando classes de elementos gráficos gerenciado