Emanuel's profileCrónicas de ellPhotosBlogListsMore Tools Help

Blog


    June 01

    Programación Orientada a Objetos

    Lee este artículo y aprende lo básico de la POO,

    Después de este artículo veras la POO de otro modo

    May 18

    Creando clases y sobre escribiendo métodos

    Recordando que para crear una clase necesitamos de la palabra reservada Class, y para crear un método, necesitamos de las palabras Function y Sub. En este artículo desarrollaremos un clásico, el programa de fracciones.

    Qué aprenderás

    · Crear una clase con propiedades y sobrescribir métodos

    · Crear el clásico programa que en el 99% de las escuelas lo piden como ejercicio

    Para sobreescribir un método necesitamos de la palabra reservada

    Termina de leer este artículo

    May 05

    Eventos y delegados - Agregando componentes

    Un delegado es una clase que puede contener una referencia a un método, es decir, es la forma que .NET define un puntero; pero, a diferencia de las clases comunes, un delegado solo puede guardar referencias a los métodos que coinciden con su prototipo.

    · A Explicar que es un delegado y como hacer uno

    · Como declarar y hacer un evento desde tu aplicación

    · A explicar cómo se implementa un Event Handler y asociarlo a tu aplicación

    · A Describir cómo agregar y remover dinámicamente eventos

    Para este ejemplo se creará un proyecto para realizar una clase denominada MaquinaDonas, que representa a una máquina que hace donas de una fábrica virtual. Esta clase creará una instancia de la clase Donas, que actualizará sus datos a través de eventos.

    · Agregar componentes

    · Agregar miembros

     

    Checate estos artículos

    April 28

    Evento Validating y Usando properties

    - La forma más fácil de validar datos es usando el evento Validating; este ocurre antes de que el control pierde el Focus. Este evento provee de una manera elegante de mostrarle al usuario un aviso, tal como: Errores, Avisos, Warnings, etc.

    - Los properties, son miembros que exponen los valores de las variables u objetos miembros de la clase. Funcionan como campos y como métodos, pues su valor es puesto y recuperado, tal como, lo hacen las variables y son declarados de forma similar a los métodos; incluso, pueden contener código.

    Qué aprenderás

    · Cómo implementar Propierties

    · Cómo crear un property de sólo lectura o solo escritura

    · Cómo crear un default property

    Checate 2 estos artículos en mi página

    April 24

    El Garbage Collector

    El administrador de memoria automática empleado por el .NET Framework es llamado Garbage collection (Recolector de Basura) La memoria de los objetos que durante un largo tiempo no es usada, es rastreada y reclamada sin una acción requerida por la aplicación.

    Qué aprenderás

    · A describir como el recolector administra y reclama la memoria no usada

    · A describir como el recolector trata las circunferencias circulares

    Checate el artículo completo

    April 22

    Niveles de acceso

    Los niveles de acceso permiten controlar como se accede a los elementos de la aplicación usando los modificadores de acceso, los cuales, son palabras reservadas como: Public, Private, y Friend que preceden a una variable o en la declaración de un tipo. Cuando una modificador de acceso precede a una declaración de un miembro, este afecta el alcance que el miembro puede obtener. Cuando un modificador precede a una declaración de un tipo, afecta tanto a sus miembros, como la forma en que este, es instanciado.

    Ve el artículo completo aquí

    April 11

    Ping Pong con Clase

    Aquí está la primera entrega de Ping Pong con clase, o mejor dicho con clases. Para la realización de este juego, necesitamos crear 3 clases, una para controlar la Barra, otra para controlar la Pelota y una más para el caso de los Puntos. Haremos uso del Drawin2D, y nos meteremos al registro de Windows (regedit) para almacenar la puntuación, y descubriremos 2 algoritmos interesantes, que si bien pueden existir mejores, no dudo que estos les agrade; en su momento explicaré cuales son y que hacen. Ahora vamos a lo nuestro...

    Mira y programa la primera parte de tu propio Ping Pong con Clase, y descarga el exe para que lo veas terminado. Haz click aquí

    April 10

    Métodos (una explicación diferente)

    Los métodos son las rutinas que hacen el trabajo de las clases y las estructuras; calculan valores, cargan datos, reciben entradas y realizan todas las manipulaciones que conforman un tipo.

    Ver artículo Completo

    March 28

    Clases VS Structuras

    Las clases y las estructuras aparentemente son iguales, ambas pueden contener miembros los cuales son campos y métodos, ambos requieren de un constructor para crear una instancia de ellos mismos y como todo en .NET, heredan de la clase Object. La principal diferencia entre las clases y estructuras es que las clases son del tipo referencia y las estructuras del tipo valor. En un nivel más bajo, las clases son alojadas en el heap, mientras que las estructuras en el stack. El stack fue diseñado para tener un acceso ligero y rápido a la información, sin embargo, el amontonamiento de datos en el stack puede reducir el rendimiento de la aplicación considerablemente.

    Quieres ver el artículo completo visita: --> Mi Página <--

    March 19

    Rompecabezas 5/5

     

    Para consultar este Post, Clickea Aqui

    March 15

    Roompecabezas 4/5

    Para ver este artículo haz click aqui

    Gracias a Todos los que han visitado este espacio... Tú formas parte de los: 

    free web counter Visitantes...Gracias. (No olvides dejar tus comentarios)

    March 10

    Rompecabezas 3/?

    Hola de nuevo, en esta sección se finalizará Region "Métodos para fragmentar imagen", Iniciemos.

    NOTA: Esta es la segunda parte de éste artículo, recuerda que puedes consultar este y otros post en: http://emanuelliralozada.googlepages.com/home

    e) Método Cerrar()

    Éste método lo menciono rápido pues no es muy relevante; al llamarlo finalizará el programa

        Sub Cerrar()
            'Es importante mencionar que no podemos llamarlo de esta forma: form1.Close(), debido a la POO

            Me.Close()
        End Sub

    f) Método Revolver()

    Este código nos permitirá pasar las imágenes que tenemos en el rompecabezas a los pictures partes y revolverlos, de manera que se hará un revolvedero de imágenes. jeje

    Nota: A lo que me refiero cuando digo rompecabezas es a los pictures donde esta la imagen completa, es decir, los 16 pictures Pos

    El algoritmo es sencillo:

    • 1.- Cambiamos imágenes de pos0 a parte0, pos1 a parte1....etc
    • 2.- Almacenamos las coordenadas de parte0, parte1, ...
    • 3.- Utilizamos random para intercambiar las coordenadas de parte0, parte1...etc

    Nota: La palabra Handler indica a qué control se le asigna el evento (en palabras sencillas), es como un acceso directo al control para que ejecute "x" evento y addressof le da la dirección. ejemplo:

    La instrucción: AddHandler Posiciones(i).DragDrop, AddressOf Pos0_DragDrop

    Indica que el control posiciones(i) puede ejecutar DragDrop, y AddressOf le dice donde está ese evento, es decir, lo tiene Pos0. Sin embargo, esto no permite saber que control de los 16 posibles (16 pictures), ejecutó tal evento, para eso veremos más adelante la instrucción DirectCast

    El Código

    Sub Revolver()
            'Creamos una matriz de los pictures donde colocaremos las imágenes fraccionadas para revolver
            Dim Partes() As PictureBox = {Parte0, Parte1, Parte2, Parte3, Parte4, _
                                            Parte5, Parte6, Parte7, Parte8, Parte9, _
                                            Parte10, Parte11, Parte12, Parte13, Parte14, Parte15}
            'Creamos una matriz de los pictures donde están y donde colocaremos las partes de la imagen
            'que forman el rompecabezas

            Dim Posiciones() As PictureBox = {Pos0, Pos1, Pos2, Pos3, Pos4, Pos5, _
                                                Pos6, Pos7, Pos8, Pos9, Pos10, Pos11, _
                                                Pos12, Pos13, Pos14, Pos15}
            Dim px(15) As Integer 'Para almacenar left
            Dim py(15) As Integer 'Para almacenar top
            Dim l(15) As Boolean 'Para saber cuantas imagenes hemos revuelto

            For i As Byte = 0 To 15
                'Para mostrar los 16 pictures
                Posiciones(i).BorderStyle = BorderStyle.FixedSingle
                'intercambiar imagenes
                Partes(i).Image = Posiciones(i).Image
                'Quitar la imagen del rompecabezas
                Posiciones(i).Image = Nothing
                'Permitir el arrastre
                Posiciones(i).AllowDrop = True
                'Almacenamos datos: left y top
                px(i) = Partes(i).Left
                py(i) = Partes(i).Top
                'Ponemos todos en Falso
                l(i) = False
                'Debido a que el usuario puede revolver imagenes a pesar de haber iniciado el juego,
                'se tiene que verificar cuales están fuera del rompecabezas para...

                If i > 0 And nUndo = 0 Then
                    '...indicarle que posicion(x) debe hacer lo mismo que pos0_dragdrop
                    AddHandler Posiciones(i).DragDrop, AddressOf Pos0_DragDrop
                    '...indicarle que posicion(x) debe hacer lo mismo que pos0_dragenter
                    AddHandler Posiciones(i).DragEnter, AddressOf Pos0_DragEnter
                    '...indicarle que partes(x) debe hacer lo mismo que parte0_mousedown
                    AddHandler Partes(i).MouseDown, AddressOf Parte0_MouseDown
                    '...indicarle que partes(x) debe hacer lo mismo que parte0_mousemove
                    AddHandler Partes(i).MouseMove, AddressOf Parte0_MouseMove
                    'de lo contrario tendríamos que hacer un código para cada picture
                End If
            Next
            Dim
    indice As Integer
            Dim j As Integer = 0
            Dim Listos As Integer = 0

            While Listos < 16 'Para revolver los 16 pictures
                Do
                    indice = rand.Next(0, 15)
                Loop While l(indice) 'No permite que se repita un random
                l(indice) = True 'Pone en True para que no repita el mismo picture
                Listos += 1 '16?, finaliza While
                Partes(j).Top = py(indice) '16 posiciones posibles
                Partes(j).Left = px(indice) '16 posiciones posibles
                j += 1
            End While
        End Sub

    #End Region 'Por fin finaliza este Region

     

    Bien, Nos vemos en la cuarta Sección de Roompecabezas, veremos Region "Roompecabezas", donde tenemos los métodos para arrastrar las imagenes, calcular la posición, entre otrs. C IU

    March 07

    Roompecabezas parte2/?

    NOTA: Esta es la segunda parte de éste artículo, recuerda que puedes consultar este y otros post en: http://emanuelliralozada.googlepages.com/home 

    Region: Métodos para agregar la imagen y fragmentarla

    Realmente esto es muy sencillo, este programa lo realicé con las bases de programación y no con las bases de conocimiento de VB 2005, por ejemplo: el método setpixel es conocida desde el famoso lenguaje estructurado C, seguramente existirá alguien que conozca un método en VB mejor que este, sin embargo, para cuestiones educativas, este programa me parece excelente.

    a) El Método Abrir()

    Utiliza un OpenFileDialog para abrir una imagen, sin embargo, el control es agregado en tiempo de ejecución, quizá esto nos ahorre un poco de memoria.

    El código:
    #Region "Métodos para agregar imagen y fragmentarla"
        Sub Abrir()       
        'No es necesario agregar el Control, podemos declararlo desde aqui
            Dim Abrir As New OpenFileDialog 
            With Abrir
            'Titulo del Cuadro de dialogo
                .Title = "Buscar Imagen"
                'Filtro para el tipo de imágenes que se muestran
                .Filter =
    "Archivos de Imagen|*.bmp;*.jpg;*.gif"        
                'Esto es importante, para controlar el botón Cancelar
                If .ShowDialog = Windows.Forms.DialogResult.OK Then
                    Pinta_Cuadro(.FileName) 'Se verá más adelante
                    Fraccionar_Imagen() 'Se verá más adelante
                End If 
            End With
        End Sub          
    b) El Método Pinta_Cuadro()

    Genera un nuevo bmp con la imagen que seleccionó el usuario, lo guarda con un tamaño de 400x400 en un archivo temporal llamado: bmptemporal.bmp

    El código:
        Private Sub Pinta_Cuadro(ByVal filename As String)
            'Creamos el Objeto Gráfico, la variable g ya la declaramos en region Variables
            If g Is Nothing Then g = ObjetoGrafico()'Este método viene más abajo
            'En el método DrawImage almacenamos la imagen y le damos el tamaño utilizando el picture: Picimagen
            g.DrawImage(New Bitmap(filename), New Rectangle(0, 0, picImagen.Width, picImagen.Height))
            'Se salva la imagen en el archivo temporal
            picImagen.Image.Save(Application.StartupPath & "\bmptemporal.bmp")
            'Se guarda la dirección de la imagen seleccionada en el Tag
            picImagen.Tag = filename
            'Sino se invalida el grafico del picture no se dibujará la nueva imagen
            picImagen.Invalidate()
        End Sub
    c) El Método ObjetoGrafico()

    En este método creamos el bmp, el cual ponemos al picImagen, creamos un grafico del nuevo bmp y lo retornamos a la variable g del método anterior, por eso podemos manipular la imagen que seleccionó el usuario, y guardar el archivo temporal con extensión .bmp

    El código:

        Private Function ObjetoGrafico() As Graphics
            'Creamos un mapa de bits con las dimensiones del picture PicImagen
            Dim bmp As Bitmap = New Bitmap(picImagen.Width, picImagen.Height)
            'Colocamos el nuevo mapa de bits en PicImagen       
            picImagen.Image = bmp
            'creamos el objeto gráfico utilizando el bmp, esto permite convertir la imagen a un bmp
            Dim dibujo As Graphics = Graphics.FromImage(bmp)
            Return dibujo
        End Function

    d) El Método Fraccionar_Imagen()

    Ésta, es quizá, la parte más importante de este programa, ya que permite dividir la imagen en partes, en este caso: 16 partes de 100x100. El algoritmo es sencillo, primero se lee la imagen que guardamos con el nombre de "bmptemporal.bmp" y lo almacenamos en un bitmap, enseguida, recorremos con un foreach los pictures que están dentro de Panel1, leemos lo que tienen en propiedad Tag y utilizamos Split para separar las cadenas y saber en qué picture estamos, enseguida, de acuerdo al número obtenido le damos la dimensiones o las coordenadas para obtener la fraccion adecuada.

    Una vez obtenidas las coordenadas, recorremos esa parte de la imagen temporal con GetPixel, y al mismo tiempo lo guardamos en el picture adecuado con SetPixel. Eso es todo, realmente sencillo.

    El código:

        Sub Fraccionar_Imagen()
            'Disimulamos el algoritmo, no queremos que el usuario vea una imagen sin sentido
            picImagen.Visible = False
            'leemos el archivo temporal
            Dim bmp As New Bitmap(Application.StartupPath & "\bmptemporal.bmp")
            Dim i As Long, iIn As Long 'Coordenadas       
            Dim j As Long, jIn As Long 'Coordenadas
            Dim Control As PictureBox ' Para recorrer los controles con el foreach
            Dim nombre As String 'Se almacena el nombre
            Dim pos As Integer '
            Dim color As Color 'Para almacenar el color del Pixel al usar GetPixel
            Panel1.Cursor = Cursors.AppStarting 'Ponemos el cursor en estado de Loading...
            Me.Cursor = Cursors.AppStarting 'Ponemos el cursor en estado de loanding...
            'Este label coloca un texto para indicarle al usuario que estamos fragmentando la imagen
            Label2.Visible = True
            'Inicia el Foreach
            For Each Control In Panel1.Controls 'Es importante indicarle que se trata de los controles de Panel1
                'Separamos la cadena que almacenamos en la porpiedad Tag, regresen al primer artículo en la parte
                'de introducción para que lo chequen, si quieren claro

                nombre = Control.Tag.ToString.Split(":".ToCharArray)(0)
                'Esto es importante, aqui sabemos que picture tenemos, y tambien que parte de la imagen
                'se colocará en este picture

                pos = Convert.ToUInt32(Control.Tag.ToString.Split(":".ToCharArray)(1))
                'Esto es para que no se muestre como se va colocando la imagen
                Control.Visible = False
                'Una vez que sabemos que picture tenemos, damos las coordenadas adecuadas
                Select Case pos
                    Case e 0 : iIn = 0 : jIn = 0
                    Case 1 : iIn = 0 : jIn = 100
                    Case 2 : iIn = 0 : jIn = 200
                    Case 3 : iIn = 0 : jIn = 300
                    Case 4 : iIn = 100 : jIn = 0
                    Case 5 : iIn = 100 : jIn = 100
                    Case 6 : iIn = 100 : jIn = 200
                    Case 7 : iIn = 100 : jIn = 300
                    Case 8 : iIn = 200 : jIn = 0
                    Case 9 : iIn = 200 : jIn = 100
                    Case 10 : iIn = 200 : jIn = 200
                    Case 11 : iIn = 200 : jIn = 300
                    Case 12 : iIn = 300 : jIn = 0
                    Case 13 : iIn = 300 : jIn = 100
                    Case 14 : iIn = 300 : jIn = 200
                    Case 15 : iIn = 300 : jIn = 300
                    Case Else
                        Exit Sub

                End Select
                'Un bmp auxiliar
                Dim bmpP As New Bitmap(Control.Width, Control.Height)
                'Inicia el recorrido de la imagen en las coordenadas adecuadas
                For i = iIn To iIn + 99
                    My.Application.DoEvents() 'Indispensable, de lo contrario se quedará "bloqueado" el programa
                    For j = jIn To jIn + 99
                        My.Application.DoEvents() 'Indispensable, de lo contrario se quedará "bloqueado" el programa
                        color = bmp.GetPixel(j, i) 'Obtenemos el pixel
                        bmpP.SetPixel(j - jIn, i - iIn, color) 'Colocamos el pixel en el bmp auxiliar
                    Next
                Next

                Control.Image = bmpP 'Ahora colocamos la imagen en el picture
            Next
            Panel1.Cursor = Cursors.Default 'Finalizando la fragmentación, colocamos el cursor en estado normal
            Me.Cursor = Cursors.Default 'Finalizando la fragmentación, colocamos el cursor en estado normal
            Label2.Visible = False 'quitamos el mensaje de fragmentando imagen
            For Each Control In Panel1.Controls 'Recorremos una vez mas los pictures para hacerlos visibles
                Control.Visible = True
            Next
        End Sub

     

    NOTA: Aquí finaliza la 2da parte, en la tercera finalizaremos este Region, con los métodos cerrar() y Revolver(), hasta aquí ya puedes correr el programa, recuerda entonces colocar el #End Region, pues yo lo tengo hasta finalizar los 2 métodos que acabo de mencionar.

    Los errores que encontrarás son de sintaxis, quisiera decir que los coloqué a propósito, pero no es así, de por sí ya es difícil colocar el código con todo y colores, revisar si lo escribí bien, te toca a ti.

    March 04

    Roompecabezas (parte 1/?)

    ¿Cómo hacer un rompecabezas con conocimientos básicos?

    OJO -> Consulta éste ártículo en: http://emanuelliralozada.googlepages.com/home

    Ok. Esta vez les presento un programa para todos aquellos amantes de la programación y para los que no, también.

    Nota:

      • Este artículo estará dividido en por lo menos 5 partes
      • Está desarrollado en Visual Basic 2005
      • Por supuesto que debes tener en caso de XP el SP2, si tienes Windows Vista, no hay problema.
      • No sólo aprenderás a realizar un sencillo rompecabezas, este programa contiene código que tiene un nivel, digamos: Intermedio avanzado. Cuando el subtitulo dice "conocimientos básicos", me refiero a manejo de imágenes.
    Introducción:

    A continuación explico brevemente lo que realiza este programa y al mismo tiempo lo que vamos a necesitar:

    1. Le da al usuario la opción de elegir una imagen utilizando el control OpenFileDialog y la coloca dentro de un picture con las siguientes propiedades:
      • name: PicImagen
      • size: 400, 400
      • location: donde quieras
      • Sizemode: StretchImage
    2. La imagen se redimenciona a un tamaño "standard" de 400x400
    3. La nueva imagen (de 400x400), se fracciona en 16 partes de 100x100
    4. Cada fracción es redibujada en un picture, por lo tanto debes colocar un control panel en tu form y dentro del panel 16 pictures con las siguientes propiedades:
      • Panel:
        • name: panel1
        • size: 434, 434
        • location: "la que quieras" yo coloque, 10, 30
      • Pictures:
        • name: pos0, pos1,..., pos15 (recuerda que son 16 pictures, de 0 a 15)
        • size: 100, 100 (para los 16)
        • location: 8,8 (solo para el picture Pos0, los demás los colocaremos con código, de lo contrario puedes colocarlos de tal forma que formen una matriz de 4x4)
        • tag: pos:0, pos:1,..., pos15(para el picture Pos0, pos:0; para el Pos1, pos:1; etc)
    5. Revuelve aleatoreamente los 16 pictures y los coloca en "otros" pictures, con las siguientes propiedades:
      • name: Parte0, Parte1, ..., Parte15 (recuerda que son 16 pictures, de 0 a 15)
      • size: 100, 100 (para los 16)
      • location: donde quieras (Yo forme otra matriz de 4x4)
      • tag: parte:0, parte:1,..., parte:15(para el picture Parte0, parte:0; para el Parte1, parte:1; etc)
    6. Ofrece la opción de Deshacer Movimiento, para que el usuario regrese la última imagen colocada
    7. Finalmente, cuando finaliza los 16 movimientos posibles, le muestra al usuario como fue colocando las imágenes, y también si lo hizo de la forma correcta
    8. El programa lo he dividido en 5 Regiones:
      • Region: Variables
      • Region: Inicio
      • Region: Métodos para agregar y fragmentar la imagen
      • Region: Rompecabezas
      • Region: Menú y form (Esta parte es donde tu decides la forma de tu presentación, en mi caso utilicé Menús que se encargan de llamar a los métodos).
    Region 1: Variables

    Esta parte contiene la declaración de variables, no hay mucho que explicar así que sin ningún obstáculo les muestro el código:

    Nota:
    Recuerda que las variables deben ir después del: Class Form1

    El código:

       #Region "Variables"
           'Para controlar los gráficos
           Dim g As Graphics
           'Para revolver las imagenes
           Dim rand As New Random
           'Para verificar si el usuario está arrastrando la imagen
           Dim Arrastra As Boolean = False
           'Para saber cual imagen está moviendo, dónde la coloca y para hacer el método Deshacer
           Dim miSender(15) As Objects, miOtroSender(15) As Object
           'Saber cuantos movimientos a realizado, para saber cuantos undo puede hacer
           Dim nUndo As Byte = 0
           'Para verificar si ya realizó los 16 movimientos posibles
           Dim Ver As Atring
       #End Region

    Region 2: Inicio

    Aquí vamos a colocar los Pictures (Pos0, Pos1,...Pos15) en una matriz de 4x4, podemos aprovechar que lo colocamos dentro del panel para usar un foreach, sin embargo, un foreach no necesariamente los va a colocar en el siguiente orden:

    [Pos0 ] [Pos1 ] [Pos2 ] [Pos3 ]

    [Pos4 ] [Pos5 ] [Pos6 ] [Pos7 ]

    [Pos8 ] [Pos9 ] [Pos10] [Pos11]

    [Pos12] {Pos13] [Pos14] [Pos15]

    Pues bien, al no usar el foreach, simularemos una matriz de controles como en VB 6.0 (aunque es la primera vez que colaboro, no significa que no tenga tiempo en esto, de echo VB 6.0 ha sido de mis favoritos)

    Nota:
    Es recomendable que bajes el exe  [click -> Roompecabezas] para que le des una checada de como funciona, y aunque aquí no coloco los comentarios tipo xml, también te recomiendo que los coloques, es muy sencillo pones 3 veces el comentario normal: ''' e inmediatamente, VB te coloca en posición para comentar, además, cuando codificas, esos comentarios los utiliza el intellisense.

    El código:

    Método Inicio

       #Region "Inicio"
           Sub Inicio()
              'Aqui creamos la matriz de controles Picture
              Dim Posiciones() As PictureBox = {Pos0, Pos1, Pos2, Pos3, Pos4, Pos5, _
              Pos6, Pos7, Pos8, Pos9, Pos19, Pos11, Pos12, Pos13, Pos14, Pos15}
              'Colocamos el primer Picture -Posiciones(Pos0)- con borderstyle = none
              'Tambien se puede cambiar la propiedad location desde aqui

              Posiciones(0).BorderStyle = BorderStyle.None
              'Este código es clásico desde que aprendes a programar Matrices en lenguajes como c,
              'varía un poco, pero sigue siendo el mismo problema

              Dim j As Integer = 4
              'He aqui el código para colocar la matriz de 4x4
              For i As Integer = 1 To 15
                 If i = j Then
                    Posiciones(j).BorderStyle = BorderStyle.None
                    Posiciones(j).Top = Posiciones(j - 4).Top + Posiciones(j - 4).Height
                    j += 4
                 Else
                    Posiciones(i).BorderStyle = BorderStyle.None
                    Posiciones(i).Left = Posiciones(i - 1).left + Posiciones(i - 1).Width
                    Posiciones(i).Top = Posiciones(i - 1).Top
                 End If
              Next
           End Sub        
       #End Region

    Bien, aquí finaliza esta primera parte, en la segunda veremos la parte de Región 3: "Fragmentar Imagen".
    

    March 02

    My Tale

    Hola a mis compañeros, hola a mis amigos, hola reverendos,
    a mis profesores y lectores, camaradas y a mis valedores;
    en este momento, como todo gran evento les presento:
    "¡¡¡Explosión!!!, aquí empiezan las crónicas del blog de Emanuel"
     
    La Graduación, mucha emoción y satisfacción al saber
    que esta generación, tenía como misión el crecer,
    inicia, participación en el conscurso nacional de ingenio y creatividad,
    Primero el Local, se logró ganar, en el regional, el 3er lugar.
     
    Investigación, de tecnología, muchas cosas nuevas que aprender
    un soñador, lleno de ilusión es José Miguel,
    pasión, esfuerzo y anhelo puso al traer
    a microsoft, su tecnología y la academic cell, ITESA.net
     
    Discusión, crap, c sharp vs visual basic,
    solo por saber quien es el rey, accept it
    todo cae por su propia gravity, como un spaghetti
    lineas grandes que te enredan, oh reality
     
    ok, give me a new opportunity
    y confesaré, who is the only one king
    no jokin, pero dame un breve interludio,
    el verdadero rey es visual studio.
     
    A mis compañeros los sinceros, a todos mis amigos y enemigos
    a mis profesores y lectores, camaradas y a todos mis amores;
    en este momento, como aquel que actúa continúa:
    "¡¡¡Explosión!!!, las crónicas del blog de Emanuel"
     
    Se pasó rápido el año y el segundo concurso inició
    Todo se hiba al caño, para mi el proyecto se acabó
    pero como dice Eminem: "do not miss your chance to blow"
    y nos fuimos de volón el Wedo, el Rafa y yo
     
    Penalización, directivos del ITESA corrieron a Nayiv
    por lo tanto al concurso no pudo acudir
    aún así, mis agradecimientos por apoyar a Encrypt
    y Thank you for believing all this time, en mí.
     
    too my family, too my aunt efi, too my friend lili
    Norma, Wedo, Rafa, Migue, adolfix y también a G
    y a todos los que no menciono aquí, sorry to forget y
    i am sorry for This whole rap shit.

    A mis compañeros los sinceros, a todos mis amigos y enemigos
    a mis profesores y lectores, camaradas y a mis nuevos patrones;
    en este momento, como buena taquiza finaliza:
    "¡¡¡Explosión!!!, las crónicas del blog de Emanuel"...This tale has no end.
     
     
    February 27

    Im back, im back, ....my back

    Ya sé que el titulo de esta entrada es "pirata", pero la noticia no lo es. Estoy de vuelta!!!.
     
    Para todos aquellos que en algun momento leyeron mi blog, quiero decirles que empezaré nuevamente a escribir, esta vez, de todo un poco. Sin embargo, para los amantes de la programación(y para los que no, tambien), publicare algunas cosas sobre programación.
     
    Hice algunos programas interesantes y los publicaré para que los estudien, sino los publicao aqui, les dejaré el link.
     
    Saludos a todos.
     

    Gracias a Todos los que han visitado este espacio... Tú formas parte de los: 

    free web counter Visitantes...Gracias. (No olvides dejar tus comentarios)
     

    May 30

    Conferencia en el CBTis

    Hola, pues solo presentandome para comunicarles sobre las conferencias en el CBTis, ya habíamos ido una vez, pero en esta ocación hubo 2 cosas que nos hicieron regresar:

    1.- La Semana de computación que celebran en esa institución y

    2.- La presentación oficial de ACME.net, célula que se abrió gracias a la motivación que les llegó a los muchachos en la primera presentación que hicimos, MSP José Miguel con Windows Vista y yo con Office 2007.

    Chequen las fotos, aunque todavía faltan varias, estas son, cuando nos entregaron los reconocimientos y cuando se presentó la célula acme.net.

    C IU

    -------------------------------------------------------------------------------------------------------------------------------------------

    Gracias a Todos los que han visitado este espacio... Tú formas parte de los: 

    free web counter Visitantes...Gracias. (No olvides dejar tus comentarios)
    free web counter 

    May 11

    XNA, Intro:

    Saludos, aqui les presento un post sobre XNA. Disfrutenlo...

    ¿Qué es?: Para empezar, XNA no es un acrónimo, parece ser el nombre propio de la Tecnología,y es un conjunto, aunque me gustaría llamarlo sistema, de bibliotecas .NET, con las cuales se pueden desarrollar video juegos con gran facilidad los cuales funcionan sin problema tanto para Windows como para tu XBox 360. Aunque esto no significa que al momento de correr tu juego, este sea eficiente, para esto tienes que desarrollar buenos algoritmos.

    Meta de XNA: La meta es crear video juegos en "5 minutos" (Nótese que es solo una referencia a la velocidad con la que se pueden desarrollar video juegos), eliminando elementos de programación, que suelen requerir una gran inversión de tiempo:

      • Creación de la ventana.
      • Enumerar aparatos gráficos y sus características.
      • Lectura, inicializazión, etc del sistema de entrada (Teclado, mouse y GamePad).
      • Dispositivos de representación 3D.
      • Punteros.
      • Direcciones a Objetos e interfaces.

    Puff, si continúo la lista crecería un poco más.

    Capas de XNA:

      • Games.
      • Extended Framework.
      • Core.
      • Platform.

    Aunque parece que empezaré al revés, realmente no lo es.

    Plataforma: Es la parte más baja y agrupa API nativo, enmascarado por XNA, se conforma por:

    NOTA: No explicaré estos componentes, pero si les pongo un link para que consultes a que se refiere cada uno de ellos.

    Core (Núcleo): Ésta capa proporciona las funcionalidades sobre las cuales trabajan las otras.

      • Gráficos
      • Audio
      • Entradas
      • Matemáticas
      • Almacenaje

    Extended (Extensión): Es la parte dónde el desarrollar juegos, realmente se hace fácil.

      • Modelo de aplicación: Permite al programador centrarse solo en escribir su juego.
      • Content Pipeline: Es la propuesta de microsoft para facilitar la administración y construcción de los contenidos en los juegos.
        • Es simple de utilizar
        • Es extensible
        • Es adaptable
        • Componentes:
          • Importador: Cuando se agrega un contenido es necesario el importador, que es el responsable de tomar datos y de normalizarlos.
          • Modelo de objetos de documento (DOM): Éste término DOM se utiliza simplemente para representar una colección de clases o esquemas.
          • Procesador: El procesador es responsable de tomar datos del contenido tipo DOM y de crear un objeto en tiempo de ejecución.
          • Serializador (.xnb): El archivo se escribe nuevamente y es trabajo del Cargador el recuperar la información escrita en él.
          • Cargador: Se encarga de convertir el archivo .xnb en un objeto o clase (DOM) para que pueda ser utilizado en tiempo de ejecución.
          • Componente Content Manager: Al agregar un archivo el GSE se encarga automáticamente de buscar los importadores y procesadores necesarios, además de que asegura que todos los activos asociados están cargados al mismo tiempo.

    NOTA: el GSE, es el acrónimo de Game Studio Express, el entorno donde desarrollaremos nuestros juegos.

    Games (Juego): Son las partes con las que el programador realmente interactúa.

      • Paquete de inicio
      • Código
      • Contenido
      • Componentes

    Requisitos: 

      • GSE: Es el IDE que se ha preparado para XNA. Integra el cargador de contenidos y la creación de proyectos predefinidos.
      • C# Express Edition: Aunque el GSE está diseñado para funcionar sobre C#, no quiere decir que sólo se puede programar sobre este lenguaje, o solo usando el GSE. Solo para recordar, XNA es un sistema de librerías (en realidad 2), que están hechas para framework 2.0, por lo tanto se puede hacer referencia desde cualquier proyecto .NET. Por supuesto, utilizar el XNA GSE tiene muchas ventajas, pero no implica que se tenga que usar C# obligatoriamente.
      • .Net Framework 2.0: Es literalmente una armadura que permite a los programas creados en ella ser independientes en el sistema operativo (Windows 98/2000/Server2003/XP/XP64/Vista32/Vista64).
      • Tarjeta gráfica que soporte shaders 2.0 o superior.
      • Para que funcione en tu XBox 360:
        • Un XBox 360, por supuesto.
        • Una suscripción a Creator´s club.

    Eso es todo por el momento, no olvides que estoy dispuesto a recibir tus comentarios.

    C IU.

    April 20

    Macros para Windows Live Search

    Seguramente te preguntarás, ¿qué es esto?, un poco más adelante lo platicaré lo más sencillo posible, antes quiero decirte que esta nueva forma de búsqueda, esta de lo mejor o ¿acaso nunca te has hartado de los buscadores que te ponen miles de páginas y además el 50% de lo que te muestra, es inservible?, pues ahora, puedes crear macros de búsqueda, es decir, personalizas lo que quieres buscar y y con un solo click, puff, te muestra los resultados. ¿Interesante?, y espera que veas lo sencillo que es. Empezemos:

    1) Que tal si primero verificamos, ¿Qué es una macro?

    • Una Macro son una serie de pasos que se almacenan y se pueden activar.
    • Las macros son grupos de instrucciones que tienen un seguimiento cronológico usadas para economizar tareas.
    • En otras palabras, las tareas  que frecuentemente realizas, las guardas y después solo las ejecutas con un control o un click.

    2) Y entonces, ¿Qué es una Macro de Búsqueda?:

    • Es personalizar nuestras búsquedas de acuerdo a nuestra necesidad, por ejemplo: Podemos crear una macro de búsqueda sobre una afición, área de investigación, video juegos, o buscar blogs, etc.
    • Es buscar en sitios Web concretos en lugar de hacerlo en la totalidad del Web.

    3) Haz click Aqui para que veas un ejemplo de como es una página de búsqueda personalizada con macros.

    • En este caso, es una macro que busca letras de canciones.

    4) La macro que crearás será para Windows Live Search, por lo tanto necesitas una cuenta LIVE, y una vez creada o si ya tienes una, inicia sesión.

    5) Despúes de la teoría viene la práctica.

    1. Haz click Aqui para dirijirte al sitio Web Macros de Búsqueda.
    2. Dale click al boton que dice "Primeros Pasos" 
    3. Ahora, dale click en Básico y, a continuación en siguiente.
    4. Verás un cuadro de texto a la derecha de la página, ahí tienes que escribir los sitios Web que deseas que busque la macro.
    5. Escribe una consulta en el cuadro de consulta y haz click en el boton búsqueda de prueba , con esto comprobarás como funcionará tu Macro.
    6. Guarda tu Macro, y ahora crearás un ID del Creador de Macros o sea, dale tu nombre o nick, y haz click en continuar o siguiente
    7. Dale un Nombre a tu Macro y LISTO AMIGOS, ya tienen una macro de búsqueda.

    6) Ahora, solo tendrán que iniciar sesión para entrar y para crear nuevas macros pero recuerden que deben ir al sitio de Macros de Búsqueda.

    Uffff, fué largo?, no verdad, y si lo fué, una vez que notes como ya tienes tu macro y tu nombre...Te sentirás mejor.

    Agradeceré sus comentarios... Atte: ellSoft

    April 15

    Alegría, Emoción, no se que siento...

    Aunq, realmente, creo q lo sé...es compromiso, pasión, convicción, es...es hora de echarle jamón.

    El 13 de abril del presente, me entero de una excelente noticia, la cual llegó directamente a mi correo. Ahí les vá:

     

     

    Felicidades Student Partner!!!

    ¡Gracias a tus cualidades de líder y entusiasta has sido seleccionado como Student Partner de Microsoft México!

    Muy pronto recibirás el certificado que te acreditará como Microsoft Student Partner.

    Ser Student Partner significa pertenecer al grupo élite de estudiantes que conocen las últimas tecnologías y que en Microsoft México queremos impulsar para que tengan una carrera brillante.

    Wow, la verdad no lo creía, y lo leí como 5 veces hasta que me convencí...jeje, pues una noticia así no es facil de digerir, sobre todo después de tanta espera. Y bueno, mi Amigo José Miguel Mejía Sánchez, también recibió la noticia y pues ya se imaginarán la locura q produjo en nosotros, pues estamos juntos en la célula académica y en el proyecto e&b Soft y esto, aunq tenemos mucho trabajo y con esto más trabajo todavía, levanta el ánimo y sobre todo las ganas de seguir triunfando....

    OYE Blek, vamos de triunfo en triunfo hasta el fin...  :-)