Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

soloplayer

Desenhar elipse a partir de um for

Recommended Posts

Ola amigos, é um seguinte, tenho um sistema que estou criado e precisava da seguinte coisa, ele pede pra digitar um numero ai digito 2 ai ele pega e desenha 2 elipces no meu form e assim sucessivamente tenho um exemplo com o for

 

'definindo a minha variavelpublic numero as integerpublic contador as integerprivate sub commando1_click()contador = 0;'iniciando meu for mas nao sei como desenhar a elipce na tela for contador = contador to 2	codigo para desenhar nextend functionend sub

galera é isso bem simples mas nao estou conseguindo que na hora que o for rode ele desenha a quantidade de elipces conforme a quantidade que o kra digita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já experimentou o método Circle do formulário?

 

Me.Circle (1000, 500), 500, vbBlack, , , 2

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigos, deu certo o codigo de nosso amigo Graymalkin

que é o ---> Me.Circle (200 + 300, 600 + 100), 50 + 20, vbBlack, , , 2 - so que gostaria de desenhar dentro do for, conforme digitar 1 to 3 ele desenha 3 elipces so que posicionar em lugares diferentes o codigo é o seguinte.

 

'definicao de variaveis globaisPublic inicial As IntegerPublic final As IntegerPublic inicialaux As IntegerPublic finalaux As IntegerPublic contador As IntegerPrivate Sub Command1_Click()Dim r As New NóDim a1 As New Nó, a2 As New Nó, a3 As New Nó, a4 As New Nó, a5 As New Nóinicial = Val(Text1)final = Val(Text2)For contador = inicial To final Me.Circle (200 + 300, 600 + 100), 50 + 20, vbBlack, , , 2	Next  End Sub

gostaria que se possivel me dessem uma mao. Grato.

 

Kleber Gracia Soares/Projetista de Sistemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Help, editei meu cogido e ele ficou assim, faco um for que soma os valores e desenha varias elipces, agora precisaria ligar elas em uma linha, o pos acima de desenha varios ficou como abaixo, agora preciso ligar todas elas.

 

'definicao de variaveis globaisPublic inicial As IntegerPublic final As IntegerPublic inicialaux As IntegerPublic finalaux As IntegerPublic contador As IntegerPublic contgrafo As IntegerPrivate Sub Command1_Click()Dim r As New NóDim a1 As New Nó, a2 As New Nó, a3 As New Nó, a4 As New Nó, a5 As New Nóinicial = Val(Text1)final = Val(Text2)contgrafo = 100For contador = inicial To final contgrafo = contgrafo + 200 Me.Circle (200 + contgrafo + contgrafo, 2000), 50 + 20, vbBlack, , , 2NextEnd Sub

o codigo é este acima.

 

Kleber Gracia/Projetista de Sistemas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para desenhar linhas, dá uma olhada na função Line

Me.line 'ou form.line
funciona do mesmo jeito que a Circle.

 

O que é uma árvore binária?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brigadaum amigo, mas nao entendi como funfa a arvore dele, nao esta faltando a parte do form, o meu esta dividido assim:

 

formulario

'definicao de variaveis globaisPublic inicial As IntegerPublic final As IntegerPublic inicialaux As IntegerPublic finalaux As IntegerPublic contador As IntegerPublic contgrafo As IntegerPrivate Sub Command1_Click()Dim r As New NóDim a1 As New Nó, a2 As New Nó, a3 As New Nó, a4 As New Nó, a5 As New Nóinicial = Val(Text1)final = Val(Text2)contgrafo = 100For contador = inicial To final contgrafo = contgrafo + 200 'Me.Circle (200 + contgrafo + contgrafo, 2000), 100, vbBlack, , , 2 r.elemento = contador a1.elemento = contador a2.elemento = contador  Set r.esq = a1 Set a1.dir = a2 Iterar r, 2000, 200NextEnd SubPublic Function Iterar(ByVal raíz As Nó, ByVal posx As Long, ByVal posy As Long)	raio = 200	Me.Circle (posx, posy), raio	Me.CurrentY = posy - 100	Me.CurrentX = posx - 100	Me.Print raíz.elemento		If Not raíz.esq Is Nothing Then		eposx = posx - 600		eposy = posy + 600		Me.Line (posx, posy + raio)-(eposx, eposy - raio)		Iterar raíz.esq, eposx, eposy	End If		If Not raíz.dir Is Nothing Then		dposx = posx + 600		dposy = posy + 600		Me.Line (posx, posy + raio)-(dposx, dposy - raio)		Iterar raíz.dir, dposx, dposy	End IfEnd Function

 

modulo

Dim raíz As NóDim valor As String' Variáveis usadas para inserir nó:Private varInsDuplicados As BooleanPublic varInsNó As VariantPublic Function Mostrar(ByVal r As Nó, ByVal posx As Long, ByVal posy As Long)	raio = 200	frmPrincipal.Circle (posx, posy), raio	frmPrincipal.CurrentY = posy - 100	frmPrincipal.CurrentX = posx - 100	frmPrincipal.Print r.info		If Not r.esquerda Is Nothing Then		eposx = posx - 600		eposy = posy + 600		frmPrincipal.Line (posx, posy + raio)-(eposx, eposy - raio)		Mostrar r.esquerda, eposx, eposy	End If		If Not r.direita Is Nothing Then		dposx = posx + 600		dposy = posy + 600		frmPrincipal.Line (posx, posy + raio)-(dposx, dposy - raio)		Mostrar r.direita, dposx, dposy	End IfEnd FunctionPublic Sub AddUnique(varNewItem As Variant)	' Adiciona novos nós, sem adicionar duplicados	varInsDuplicados = False	varInsNó = varNewItem		Call funInserirNó(raíz)End SubPrivate Function funInserirNó(ti As Nó) As Nó	' Adiciona um novo nó como ti	' Variáveis:	'	varInsNó: valor a ser inserido na árvore	'	varInsDuplicados: variável que indica se o valor é duplicado	If ti Is Nothing Then		Set ti = New Nó		Set ti.direita = Nothing		Set ti.esquerda = Nothing		ti.info = varInsNó	Else		If varInsNó < ti.info Then			Set ti.esquerda = funInserirNó(ti.esquerda)		ElseIf varInsNó > ti.info Then			Set ti.direita = funInserirNó(ti.direita)		Else			' não deixa adicionar porque o item já existe			MsgBox "Esse valor já existe na árvore.", vbInformation			If varInsDuplicados Then				Set ti.direita = funInserirNó(ti.direita)			End If		End If	End IfEnd FunctionPublic Sub MostrarArvore()Call Mostrar(raíz, 2000, 200)End SubPublic Sub WalkPreOrdem()valor = ""Call PréOrdem(raíz, valor)End SubPublic Sub PréOrdem(ti As Nó, valor)	If Not ti Is Nothing Then		valor = valor + ti.info		Call PréOrdem(ti.esquerda, valor)		Call PréOrdem(ti.direita, valor)	End If		frmPrincipal.lblPréOrdem.Caption = valorEnd Sub

classe Nó.cls

Public elemento As Integer	Public esq As NóPublic dir As Nó

So que é o seguinte eu tenho dois label no form, dois textbox e um botao, ai eu digito o ponto incial e o ponto final onde ele faz um loop e mostra a arvore, mas ele so mostra as 3 primeiras e os numeros nao fazem em ordem tipo, primeira bolinha 1, segunda bolinha 2, terceira bolinha 3 e assim por diante, e eu gostaria de implementar uma funcao que pedisse quantas ligacoes pode ser feitas na arvoce depois dela feita, tipo, 1 e 2, tem 3 arestas e assim por diante mas se puderem me ajudar so na primeira parte a implementacao eu tento fazer. grato pessoal, pra quem comecou do zero ja tamo entendendo da parada hehehe, valeus

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brigadaum amigo, mas nao entendi como funfa a arvore dele, nao esta faltando a parte do form, o meu esta dividido assim:

 

formulario

'definicao de variaveis globaisPublic inicial As IntegerPublic final As IntegerPublic inicialaux As IntegerPublic finalaux As IntegerPublic contador As IntegerPublic contgrafo As IntegerPrivate Sub Command1_Click()Dim r As New NóDim a1 As New Nó, a2 As New Nó, a3 As New Nó, a4 As New Nó, a5 As New Nóinicial = Val(Text1)final = Val(Text2)contgrafo = 100For contador = inicial To finalcontgrafo = contgrafo + 200'Me.Circle (200 + contgrafo + contgrafo, 2000), 100, vbBlack, , , 2r.elemento = contadora1.elemento = contadora2.elemento = contadorSet r.esq = a1Set a1.dir = a2Iterar r, 2000, 200NextEnd SubPublic Function Iterar(ByVal raíz As Nó, ByVal posx As Long, ByVal posy As Long)	raio = 200	Me.Circle (posx, posy), raio	Me.CurrentY = posy - 100	Me.CurrentX = posx - 100	Me.Print raíz.elemento		If Not raíz.esq Is Nothing Then		eposx = posx - 600		eposy = posy + 600		Me.Line (posx, posy + raio)-(eposx, eposy - raio)		Iterar raíz.esq, eposx, eposy	End If		If Not raíz.dir Is Nothing Then		dposx = posx + 600		dposy = posy + 600		Me.Line (posx, posy + raio)-(dposx, dposy - raio)		Iterar raíz.dir, dposx, dposy	End IfEnd Function

 

 

 

modulo

Dim raíz As NóDim valor As String' Variáveis usadas para inserir nó:Private varInsDuplicados As BooleanPublic varInsNó As VariantPublic Function Mostrar(ByVal r As Nó, ByVal posx As Long, ByVal posy As Long)	raio = 200	frmPrincipal.Circle (posx, posy), raio	frmPrincipal.CurrentY = posy - 100	frmPrincipal.CurrentX = posx - 100	frmPrincipal.Print r.info		If Not r.esquerda Is Nothing Then		eposx = posx - 600		eposy = posy + 600		frmPrincipal.Line (posx, posy + raio)-(eposx, eposy - raio)		Mostrar r.esquerda, eposx, eposy	End If		If Not r.direita Is Nothing Then		dposx = posx + 600		dposy = posy + 600		frmPrincipal.Line (posx, posy + raio)-(dposx, dposy - raio)		Mostrar r.direita, dposx, dposy	End IfEnd FunctionPublic Sub AddUnique(varNewItem As Variant)	' Adiciona novos nós, sem adicionar duplicados	varInsDuplicados = False	varInsNó = varNewItem		Call funInserirNó(raíz)End SubPrivate Function funInserirNó(ti As Nó) As Nó	' Adiciona um novo nó como ti	' Variáveis:	'	varInsNó: valor a ser inserido na árvore	'	varInsDuplicados: variável que indica se o valor é duplicado	If ti Is Nothing Then		Set ti = New Nó		Set ti.direita = Nothing		Set ti.esquerda = Nothing		ti.info = varInsNó	Else		If varInsNó < ti.info Then			Set ti.esquerda = funInserirNó(ti.esquerda)		ElseIf varInsNó > ti.info Then			Set ti.direita = funInserirNó(ti.direita)		Else			' não deixa adicionar porque o item já existe			MsgBox "Esse valor já existe na árvore.", vbInformation			If varInsDuplicados Then				Set ti.direita = funInserirNó(ti.direita)			End If		End If	End IfEnd FunctionPublic Sub MostrarArvore()Call Mostrar(raíz, 2000, 200)End SubPublic Sub WalkPreOrdem()valor = ""Call PréOrdem(raíz, valor)End SubPublic Sub PréOrdem(ti As Nó, valor)	If Not ti Is Nothing Then		valor = valor + ti.info		Call PréOrdem(ti.esquerda, valor)		Call PréOrdem(ti.direita, valor)	End If		frmPrincipal.lblPréOrdem.Caption = valorEnd Sub

 

classe Nó.cls

Public elemento As Integer	Public esq As NóPublic dir As Nó

So que é o seguinte eu tenho dois label no form, dois textbox e um botao, ai eu digito o ponto incial e o ponto final onde ele faz um loop e mostra a arvore, mas ele so mostra as 3 primeiras e os numeros nao fazem em ordem tipo, primeira bolinha 1, segunda bolinha 2, terceira bolinha 3 e assim por diante, e eu gostaria de implementar uma funcao que pedisse quantas ligacoes pode ser feitas na arvoce depois dela feita, tipo, 1 e 2, tem 3 arestas e assim por diante mas se puderem me ajudar so na primeira parte a implementacao eu tento fazer. grato pessoal, pra quem comecou do zero ja tamo entendendo da parada hehehe, valeus

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.