elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  buenas tardes vengo para que aprender un poco sobre el visual basic 10
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: buenas tardes vengo para que aprender un poco sobre el visual basic 10  (Leído 2,060 veces)
genesisp

Desconectado Desconectado

Mensajes: 1


Ver Perfil
buenas tardes vengo para que aprender un poco sobre el visual basic 10
« en: 24 Julio 2016, 22:15 pm »

mi duda es sobre esto :/ tengo un cuadro el cual da vuelta la flecha roja en 360 grados , mi proyecto se trata de que detecte el grado exacto de la flecha roja automáticamente , ya que la flecha rotara cada cierto tiempo  :-(
yo escaneo esa imagen pero como haría para que me diera el grado exacto de la flecha roja :c directamente cada vez que cambie si podrían ayudarme les agradecía enserio es para un proyecto de la universidad



Mod: No escribir en mayúsculas


« Última modificación: 29 Julio 2016, 00:30 am por Eleкtro » En línea

Lekim

Desconectado Desconectado

Mensajes: 268



Ver Perfil
Re: buenas tardes vengo para que aprender un poco sobre el visual basic 10
« Respuesta #1 en: 28 Julio 2016, 19:01 pm »

hola

La verdad, este problema me suena que se preguntó antes, la imagen esa del cuadrado ese me suena de haberla visto antes.

De todos modos a ver si te sirve esto.





Instrucciones:
- Crea un Nuevo Proyecto
- Selecciona Aplicación de Windows Forms
- Deja todo en blanco y  copia y pega el siguiente código:

Código
  1. '//Programado por Lekim//
  2. Option Strict Off
  3.  
  4. Imports System.Drawing.Graphics
  5. Imports System.IO
  6.  
  7.  
  8. Public Class Form1
  9.    Dim picCuadrado As New PictureBox
  10.    Dim hScrollGrados As New HScrollBar
  11.    Dim ButtonPaste As New Button
  12.    ''' <summary>
  13.    ''' Permite mostrar el radio inicial a 0 grados al inicio de la aplicación
  14.    ''' </summary>
  15.    ''' <param name="e"></param>
  16.    ''' <remarks></remarks>
  17.    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  18.        MyBase.OnPaint(e)
  19.  
  20.        Actualizar_Radio()
  21.    End Sub
  22.  
  23.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  24.        Me.Size = CType(New Point(430, 360), Drawing.Size)
  25.  
  26.        '//Crea un control Picture
  27.        Me.Controls.Add(picCuadrado)
  28.        With picCuadrado
  29.            picCuadrado.BorderStyle = BorderStyle.FixedSingle
  30.            picCuadrado.Size = CType(New Point(300, 300), Drawing.Size)
  31.        End With
  32.        Me.Controls.Add(ButtonPaste)
  33.        With ButtonPaste
  34.            .Text = "Pegar"
  35.            .Location = New Point(Me.picCuadrado.Width + 20, 10)
  36.            AddHandler .Click, AddressOf ButtonPaste_Click
  37.        End With
  38.  
  39.        '//Crea un control HScrollBar
  40.        Me.Controls.Add(hScrollGrados)
  41.        With hScrollGrados
  42.            .Width = 300
  43.            .Top = picCuadrado.Height '+ hScrollGrados.Height
  44.            .Minimum = 0
  45.            .Maximum = 360
  46.            .SmallChange = 1
  47.            .LargeChange = 1
  48.            'Eventos para hScrollGrados
  49.            AddHandler .Scroll, AddressOf hScroll_Scroll
  50.            AddHandler .ValueChanged, AddressOf hScroll_ValueChanged
  51.        End With
  52.  
  53.  
  54.    End Sub
  55.  
  56.    Private Sub hScroll_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs)
  57.        Actualizar_Radio()
  58.        Me.Refresh()
  59.    End Sub
  60.  
  61.    Private Sub hScroll_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  62.        Actualizar_Radio()
  63.        Me.Refresh()
  64.    End Sub
  65.  
  66.    Sub Actualizar_Radio()
  67.        picCuadrado.Refresh()
  68.        '//Dibuja el radio
  69.        DIBUJAR_RADIO(picCuadrado, hScrollGrados.Value, System.Drawing.Color.Blue, 5)
  70.        '//Muestra los grados
  71.  
  72.        Me.CreateGraphics.DrawString(hScrollGrados.Value & "º", New Font("Arial", 30, _
  73.                                                                                  FontStyle.Bold, _
  74.                                                                                  GraphicsUnit.Point, 2) _
  75.  , Brushes.Blue, picCuadrado.Width + 15, 250)
  76.  
  77.    End Sub
  78.    Private Sub ButtonPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  79.  
  80.        '//Obtiene imagen desde internet
  81.        ' Dim Client As New System.Net.WebClient()
  82.        ' Client = New System.Net.WebClient
  83.        ' Dim BinData As Byte() = Client.DownloadData("http://image.prntscr.com/image/c22000d107b945968d7d232228a3bcba.png") 'descarga el archivo como byte
  84.        ' Dim imgStream As New MemoryStream(BinData) 'Convierte la imagen a stream
  85.        ' Dim img As New Bitmap(Image.FromStream(imgStream))
  86.        ' Dim img2 As New Bitmap(img, picCuadrado.Width, picCuadrado.Height)
  87.        ' picCuadrado.Image = img2
  88.  
  89.        '//Obtiene desde archivo
  90.        'Dim img As New Bitmap(Image.FromFile("C:\User\Documents\c22000d107b945968d7d232228a3bcba.png"))
  91.        'Dim img2 As New Bitmap(img, picCuadrado.Width, picCuadrado.Height)
  92.        'picCuadrado.Image = img2
  93.  
  94.        '//Obtiene imagen desde el portapapeles
  95.        If Clipboard.GetImage IsNot Nothing Then
  96.            Dim img As New Bitmap(Clipboard.GetImage)
  97.            Dim img2 As New Bitmap(img, picCuadrado.Width, picCuadrado.Height)
  98.            picCuadrado.Image = img2
  99.        End If
  100.  
  101.        Actualizar_Radio()
  102.    End Sub
  103.  
  104.    ''' <summary>
  105.    ''' Función para dibujar un radio
  106.    ''' </summary>
  107.    ''' <param name="objPicture"></param>
  108.    ''' <param name="Grados"></param>
  109.    ''' <param name="mColor"></param>
  110.    ''' <param name="Grosor"></param>
  111.    ''' <returns></returns>
  112.    ''' <remarks></remarks>
  113.    Public Function DIBUJAR_RADIO(ByVal objPicture As PictureBox, _
  114.                                    ByVal Grados As Integer, _
  115.                                    ByVal mColor As Color, _
  116.                                    ByVal Grosor As Integer) As Boolean
  117.        Dim X1 As Integer
  118.        Dim Y1 As Integer
  119.        Dim X2 As Integer
  120.        Dim Y2 As Integer
  121.        Dim Angulo As Integer 'Ángulo en grados
  122.        Dim RadioLong As Integer 'Longitud del radio
  123.        'CENTRO IMAGEN
  124.        X1 = CInt(picCuadrado.Width / 2)
  125.        Y1 = CInt(picCuadrado.Height / 2)
  126.  
  127.        'ÁNGULO
  128.        Angulo = Grados
  129.        RadioLong = picCuadrado.Width
  130.  
  131.        'COORDENADA X E Y
  132.        X2 = CInt(Int((RadioLong * Math.Cos((360 - Angulo) * (Math.PI / 180))) + X1))
  133.        Y2 = CInt(Int((RadioLong * Math.Sin((360 - Angulo) * (Math.PI / 180))) + Y1))
  134.  
  135.        'DIBUJA EL RADIO
  136.        Dim Radio As Graphics = objPicture.CreateGraphics
  137.        Dim pen As New Drawing.Pen(mColor, Grosor)
  138.  
  139.        Radio.DrawLine(pen, X1, Y1, X2, Y2)
  140.        Return Nothing
  141.    End Function
  142. End Class
  143.  


Como funciona:
- Copia la imagen en el portapapeles
- Haz Clic sobre el botón Pegar
- Mueve el HscrollBar para aumentar los grados del radio, hasta que coincida con el de la imagen.

Puedes usar las flechitas del HScrollBar para hacerlo de 1 en 1.


NOTA:
En el evento ButtonPaste_Click he puesto tres opciones distintas para pegar la imagen en el PictureBox pero dos de ellas están deshabilitadas.

Lo he puesto para que lo haga desde el portapapeles pero si quieres lo puedes cambiar


Otra opción es que uses un transportador de ángulos en la pantalla XD. No se, solo se me ocurre este programilla que he hecho.

s2s


« Última modificación: 1 Agosto 2016, 19:57 pm por Lekim » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines