DESAFIO. COMO CRIAR UM BOTAO REDONDO NO VB6.

USUARIO.EXCLUIDOS 06/09/2007 23:09:44
#234612
Pessoal, estou tentando criar uns botão redondos no meu prg mas está dificil... não encontro nada de valha a pena estudar usar... os ilustrissimos teriam alguma dica como fazer??? Conto com vocês. Muito obrigado desde já.
MJAC 07/09/2007 00:20:00
#234615
Resposta escolhida
Amigo é o seguinte, para criar um botão redondo ou elíptico basta refazer a região. Então basta usar isso:

  
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Const PS_SOLID = 0

Private Sub DrawEllipse(ByVal X As Long, ByVal Y As Long, ByVal Width As Long, ByVal Height As Long, ByVal BorderColor As Long, ByVal FillColor As Long)
Dim pBrush As Long, pPen As Long
pBrush = SelectObject(hdc, CreateSolidBrush(FillColor))
pPen = SelectObject(hdc, CreatePen(PS_SOLID, 2, BorderColor))
Call Ellipse(hdc, X, Y, X + Width, Y + Height)
Call DeleteObject(SelectObject(hdc, pBrush))
Call DeleteObject(SelectObject(hdc, pPen))
End Sub



agora em seu componente chame a função DrawEllipse passando os parâmetros de posição tamanho e cores, porém Width e Height devem ser iguais para que seja um círculo. Tenta ai e me fala abraços.
USUARIO.EXCLUIDOS 07/09/2007 03:23:11
#234625
kra faz com imagens

xD

ai vc faz uma imagem normal uma para quando passa o mouse para quando clica

fica bem legal
USUARIO.EXCLUIDOS 07/09/2007 21:31:03
#234679
mas o que vc precisa é recorta em formato circular:

Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As _

Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd _

As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Agora no form load:
Dim hr&, dl&

Dim usew&, useh&

usew& = me.Width / Screen.TwipsPerPixelX

useh& = me.Height / Screen.TwipsPerPixelY

x = 0

hr& = CreateEllipticRgn(0, 0, usew, useh) 'Faz a _

'forma da janela numa forma de um círculo descrito por x1,y1,x2,y2

dl& = SetWindowRgn(me.hWnd, hr, True)


nesse exemplo o form é recortado em formato circular
Tópico encerrado , respostas não são mais permitidas