Google Earth con Windows Forms






Sencillo programa que nos permite insertar y utilizar de forma totalmente operativa Google Earth, en una aplicación de windows forms. Es muy mejorable.

Para mas información ver el enlace: https://code.google.com/p/earth-api-samples/


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GEPlugin;
using System.Runtime.InteropServices;
using System.Security.Permissions;


namespace WindowsFormsApplication1

{
[ComVisibleAttribute(true)]
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]

public partial class Form1 : Form
{

private const string PLUGIN_URL =
   @"http://earth-api-samples.googlecode.com/svn/trunk/demos/desktop-embedded/pluginhost.html";

private IGEPlugin m_ge = null;

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate(PLUGIN_URL);
webBrowser1.ObjectForScripting = this;
}

public void JSInitSuccessCallback_(object pluginInstance)
{
m_ge = (IGEPlugin)pluginInstance;
}

}
}


Encriptación / Desencriptación







Sencillo programa que nos permite cifrar y descifrar un texto a fin de darle mayor privacidad.
Le damos salida a un fichero de texto, por si necesitamos enviar el texto cifrado por correo electrónico o cualquier otro medio. Quien reciba el texto cifrado debe disponer del programa para su desencriptado. Basado en el cifrado Cesar.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.IO;

namespace Encriptacion_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string entrada, salida;
entrada = textBox1.Text;
salida = "";
// enviamos el texto cifrado a un fichero de texto.
using (StreamWriter sw = new StreamWriter("textocifrado.txt"))
{

salida = encriptacion(entrada);
textBox2.Text = (salida);
  sw.WriteLine(salida);
}

}

private void button2_Click(object sender, EventArgs e)
{
string entrada, salida;
entrada = textBox2.Text;
salida = encriptacion(entrada);
textBox3.Text = desencriptacion(entrada);
}

private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}


Letra NIF


Sencillo programa para el calculo de la letra del NIF




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DNI_5
{
public partial class Form1 : Form
{
int numero;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
numero = Convert.ToInt32(dni.Text);
letra.Text = Convert.ToString(calcularLetra(numero));
//MessageBox.Show("El resultado es: " + calcularLetra(numero));
}
public static char
calcularLetra(int n)
{
string cadena = "TRWAGMYFPDXBNJZSQVHLCKE";
return (char)cadena[n % 23];
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}


El número de identificación fiscal (NIF) español es un código único que identifica a todos los ciudadanos españoles a efectos fiscales. Partiendo del tradicional documento nacional de identidad, DNI, añade a éste una letra que actúa como elemento verificador.

La letra del NIF se obtiene a partir de un algoritmo conocido como módulo 23. El algoritmo consiste en aplicar la operación aritmética de módulo 23 al número del DNI. El módulo 23 es el número entero obtenido como resto de la división entera del número del DNI entre 23. El resultado es un número comprendido entre el 0 y el 22. En base a una tabla conocida se asigna una letra. La combinación del DNI con esa letra es el NIF.

TABLA DE ASIGNACIÓN

012345678910111213141516171819202122
TRWAGMYFPDXBNJZSQVHLCKE


Números a Letras




Sencillo programa que nos permite pasar los números a letras. Puede tener utilidad en la confección de cheques bancarios, facturas...etc.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NumbersALetters
{
public partial class Form1 : Form
{

Conversion c = new Conversion();

public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

class Conversion
{
public string enletras(string num)
{
string res, dec = "";
Int64 entero;
int decimales;
double nro;

try
{
nro = Convert.ToDouble(num);
}
catch
{
return "";
}

entero = Convert.ToInt64(Math.Truncate(nro));
decimales = Convert.ToInt32(Math.Round((nro - entero) * 100, 2));
if (decimales > 0)
{
//dec = " CON " +  (decimales.ToString()) + "Centimos";
dec = " CON " + enletras(decimales.ToString()); // aqui añadiriamos +                                                    "Centimos"; por ejemplo
}

res = toText(Convert.ToDouble(entero)) + dec;
return res;
}


Login v.0.2



Sencillo programa que nos solicita nombre de usuario, contraseña y confirmación de la misma. La contraseña introducida se guarda en un fichero, llamado en este caso "contraseña.dat".
Se ha utilizado BinaryWriter.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;


namespace Login_v._0._2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button1_Click(object sender, EventArgs e)
{

string Usuario, Pas1, Pas2;

                         // El metodo TiemEnd() elimina los espacios en blanco hasta el final
Usuario = tbusuario.Text.TrimEnd();                
Pas1 = tbpas1.Text.TrimEnd();
Pas2 = tbpas2.Text.TrimEnd();

if (Pas1 == Pas2)
{
MessageBox.Show("Contraseña creada correctamente.", "Dado de Alta en el Sistema",
MessageBoxButtons.OK, MessageBoxIcon.Information);


Texto a voz II




Pequeña utilidad que nos lee los textos escritos, pudiendo elegir dos tipos de voz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;



namespace Texto_a_Voz_II
{
    public partial class Form1 : Form
    {

        SpeechSynthesizer synthesizer = new SpeechSynthesizer();
        List<VoiceInfo> vocesInfo = new List<VoiceInfo>();

        public Form1()
        {
            InitializeComponent();


            foreach (InstalledVoice voice in synthesizer.GetInstalledVoices())
            {
                vocesInfo.Add(voice.VoiceInfo);
                voz.Items.Add(voice.VoiceInfo.Name);

            }
            voz.SelectedIndex = 0;
        }

   

Mi segundo Robot


Esta hecho con el sistema de piezas de Makebloc. Lo fácil fue construirlo, lo difícil programarlo.
Esta basado en la placa Arduino Leonardo. Existe también con placa Arduino Uno.









Agenda - 0.1





using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
namespace Agenda
{
  public partial class MainForm : Form
  {
        // Definimos la estructura persona

    private struct persona
    {
      public string nombre;
      public string teléfono;
    }
        // Definimos la matriz unidimensional agenda 
        // Se finalizara cuando se complete la matriz o se pulse Crtl+Z

    private static int nElementos = 100;
    private persona[] agenda = new persona[nElementos];
    private int i = 0;

    public MainForm()
    {
      
      InitializeComponent();
      
    }
    
    void AñadirClick(object sender, EventArgs e)
    {
      if (i == nElementos) return;
      if (Nombre.Text.Length == 0 ||
          Tfno.Text.Length == 0)
      {
        MessageBox.Show("Datos no correctos");
        return;
      }
      // Añadir el nombre y el teléfono a la matriz

      agenda[i].nombre = Nombre.Text;
      agenda[i].teléfono = Tfno.Text;

      // Añadir el nombre a la lista

      listaNombres.Items.Add(Nombre.Text);
      i++; // índice del siguiente elemento vacío
    }
    
    void OrdenGuardarClick(object sender, EventArgs e)
    {
      BinaryWriter bw = null; // flujo para escribir
      try
      {
        // Crear un flujo de la clase BinaryWriter para
        // escribir en un fichero.
        // Si el fichero existe se destruye.
        bw = new BinaryWriter(new FileStream("agenda.dat",
                                             FileMode.Create, FileAccess.Write));
        i = 0; // índice de para la matriz agenda
        while (agenda[i].nombre != null)
        {
          // Almacenar un nombre y un teléfono
          // (un registro) en el fichero
          bw.Write(agenda[i].nombre);
          bw.Write(agenda[i].teléfono);
          i++;
        }
      }
      finally
      {
        // Cerrar el flujo
        if (! (bw == null)) bw.Close();
      }
    }
    

NET.Fiddle


Un IDE que nos permite ejecutar código, sin necesidad de iniciar Visual  Studio. Es muy completo.






using System;

public class Program
{
private string CaesarCypher(string value, int shift)
{
char[] buffer = value.ToCharArray();
for (int i = 0; i < buffer.Length; i++)
{
// Letter.
char letter = buffer[i];
if (Char.IsLetter(letter))
{
bool isLower = Char.IsLower(letter);

// Add shift
letter = (char)(letter + shift);

// Subtract 26 on overflow.
// Add 26 on underflow.
if (isLower)
{
if (letter > 'z')
letter = (char) (letter - 26);
else if (letter < 'a')
letter = (char) (letter + 26);
}
else
{
if (letter > 'Z')
letter = (char)(letter - 26);
else if (letter < 'A')
letter = (char)(letter + 26);
}
}

// Store.
buffer[i] = letter;
}
return new string(buffer);
}

public void Main()
    {
string secretMessage = @"STGML MK
========

Ow sjw s yjgmh gx .FWL vwnwdghwjk ozg sjw kauc sfv lajwv gx klsjlafy Nakmsd Klmvag, ujwslafy s fwo hjgbwul sfv jmffafy al, bmkl lg lwkl kaehdw ugvw gj ljq gml ksehdwk xjge glzwj vwnwdghwjk.

Lzak lggd osk afkhajwv tq zllh://bkxavvdw.fwl, ozauz ak bmkl sowkgew.

Ax qgm sjw aflwjwklwv af ogjcafy gf .FWL Xavvdw hdwskw kwfv qgmj jwkmew sfv dafck lg s ugmhdw gx qgmj twkl xavvdwk lg vglfwlxavvdw sl wflwuzkgdmlagfk vgl uge.  Lzw egkl aehjwkkanw xavvdw oadd ywl lzw bgt.

WFLwuz Kgdmlagfk
zllh://ooo.wflwuzkgdmlagfk.uge";

string notSoSecretMessage = CaesarCypher(secretMessage, -18);
Console.WriteLine(notSoSecretMessage);
    }
}



ABOUT US
========

We are a group of .NET developers who are sick and tired of starting Visual Studio, creating a new project and running it, just to test simple code or try out samples from other developers.

This tool was inspired by http://jsfiddle.net, which is just awesome.

If you are interested in working on .NET Fiddle please send your resume and links to a couple of your best fiddles to dotnetfiddle at entechsolutions dot com. The most impressive fiddle will get the job.

ENTech Solutions
http://www.entechsolutions.com


C # Pad


Entorno de desarrollo intuitivo y con muchas posibilidades.








I’m excited to present C# Pad, an interactive web based C# REPL.
Have you ever wanted to quickly evaluate an expression or test some code, like say try out different DateTime string formats or test a method or clear up some confusion (like what’s the difference between Uri.EscapeDataString and Uri.EscapeUriString or what new Random().Next(0) returns), or decode some string in Base64 or some other format?

C# Pad lets you easily do all those things and a whole lot more.
C# Everywhere

JSIL



    Herramienta en linea dotada de múltiples ejemplos gráficos. Vale la pena ejecutar algunos ejemplos para ver el código y su comportamiento.  Siempre se aprende algo de la forma de hacer de los demás.

     JSIL is a compiler that transforms .NET applications and libraries from their native executable format - CIL bytecode - into standards-compliant, cross-browser JavaScript. You can take this JavaScript and run it in a web browser or any other modern JavaScript runtime. Unlike other cross-compiler tools targeting JavaScript, JSIL produces readable, easy-to-debug JavaScript that resembles the code a developer might write by hand, while still maintaining the behavior and structure of the original .NET code. Because JSIL transforms bytecode, it can support most .NET-based languages - C# to JavaScript and VB.NET to JavaScript work right out of the box.

     Try JSIL out in your browser! Type some C# into the Source Code box below, and click Compile & Run.
The C# you enter is compiled on the JSIL server using the Mono compiler, then translated to JavaScript by JSIL and sent back to you.
Not familiar with C#? Try out some of the C# Tutorials from the Microsoft website!
You can share code snippets with your friends by saving them as GitHub Gists and sharing this link!



PSe Int


     Una herramienta muy recomendable no solo para los que empiezan. A cualquiera nos puede ayudar con una rutina en un momento dado.
     PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en programación. Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite centrar su atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos.











Texto a Voz - SetOutputToDefaultAudioDevice()

     Este sencillo programa nos permite introducir un texto y el ordenador nos lo lee. Nos permite parar y continuar la lectura, así como también grabar la voz del texto leído en un fichero de audio.
Todavía es muy mejorable. Habría que cambiarle la voz de lectura por una más agradable, por ejemplo.

     Con el administrador de referencias tenemos que añadir System.Speech.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech;
using System.Speech.Synthesis;

// Programa original de Sekhar Srinivasan
// https://www.youtube.com/user/sekharonline4u

namespace Texto_a_Voz_I
{
    public partial class Form1 : Form
    {
        SpeechSynthesizer ss;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ss = new SpeechSynthesizer();
        }

        private void btnleer_Click(object sender, EventArgs e)
        {
            ss.Rate = trackBarVelocidad.Value;
            ss.Volume = trackBarVolumen.Value;
            ss.SpeakAsync(textoentrada.Text);
        }

        private void btnpausa_Click(object sender, EventArgs e)
        {
            ss.Pause();
        }

        private void btncontinuar_Click(object sender, EventArgs e)
        {
            ss.Resume();
        }

Algoritmo Genético - Población de flores

     Los algoritmos genéticos forman parte de la inteligencia artificial y están inspirados en la forma de trabajar de la evolución y la genética. Creamos un cromosoma digital, en el cual cada gen es una característica que necesitamos para la solución del problema. Las posibles soluciones evolucionan y se seleccionan de forma similar a la selección natural. Existen diversas formas de llevar a cabo la selección. A veces, también suceden mutaciones que pueden ser beneficiosas o perjudiciales. El cruce entre los organismos se usa para crear la generación siguiente.






     Partimos de una población de flores en las que el usuario puede seleccionar algunas características, color, tamaño y altura del tallo. Al inicio las flores crecerán al azar. Estas se reproducirán entre sí, e incluso habrá mutaciones. Poco a poco, conforme avancen las generaciones y si todo sale bien, tendremos una población de flores similares a las que solicitó el usuario.

     Tenemos tres Group Boxes y dentro de cada unos de ellos tres Radio Buttons y debajo un Label.
     El grupo de Altura tendrá los Radio Buttons Alto,Medio y Bajo con los names: rbAlto, rbMedio y rbBajo.
     El grupo Color de la flor tendrá los Radio Buttons Rojo, Azul y Amarillo con los names: rbRojo, rbAzul y rbAmarillo.
     El grupo Tamaño de la flor tendra los Radio Buttons Pequeño, Normal y Grande con los names: rbPequeno, rbNormal y rbGrande, a la etiqueta la llamaremos lblGeneracion.

     Crearemos la clase Flores y en ella colocaremos la información del cromosoma, el valor de adaptación y la posición de la flor.

     La variable X guarda la posición de la flor, en la variable adaptación se guarda el nivel de adaptación de la flor. El cromosoma va a tener 6 genes: altura, color, color del tallo, ancho del tallo, tamaño de la flor, tamaño del centro de la flor.
 
Enlace de descarga del proyecto completo:

https://code.msdn.microsoft.com/vstudio/Algoritmo-Genetico-a481c804

Editor MDI

     Sencillo ejemplo de un editor de texto utilizando Interfaz de Múltiples Documentos MDI







Manual Oficial de C# v.5.0




     En esta ruta encontraremos el manual de referencia de la versión 5 de C#. 547 paginas. El manual de todos los manuales. C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\3082
csharp language specification.docx

Traductor - Bing



Creamos una aplicación en Windows Forms. Añadimos dos TextBox con Multiline activado a true.
En mi caso les llamo textoEntrada y TextoSalida. Ponemos un Button (Traducir).

Tenemos que agregar al proyecto una referencia a través del "Servicio de Referencia", en la dirección http://api.microsofttranslator.com/V1/SOAP.svc y en el espacio de nombre ponemos el que nos interese.



 En el espacio de nombre asigna por defecto ServiceReference1. Este nombre lo podemos cambiar por el que mas nos guste o sea mas descriptivo. En mi caso lo he llamado EnriqueTraductor.

Tenemos que instalar Bing Translator Control desde la pagina:

http://www.bing.com/dev/en-us/translator

ó desde:

https://visualstudiogallery.msdn.microsoft.com/e89713e1-6b16-4beb-9ad2-034709062ecd






Abstracción, Polimorfismo, Acoplamiento, Encapsulamiento, Herencia, Cohesión




Calculadora - I






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Calculadora
{
  public partial class Form1 : Form
  {
    private enum Entrada
    {
      NINGUNA,
      DIGITO,
      OPERADOR,
      CE
    }

    private Entrada ultimaEntrada;
    private bool comaDecimal;
    private char operador;
    private byte numOperandos;
    private double operando1;
    private double operando2;

    public Form1()
    {
      InitializeComponent();
      ultimaEntrada = Entrada.NINGUNA;
      comaDecimal = false;
      operador = '\0';
      numOperandos = 0;
      operando1 = 0;
      operando2 = 0;
    }

       // A cada uno de los botones del 0 al 9 se les ha asignado un controlador de eventos
      // en la ventana de propiedades seleccionamos el evento Click y asignamos al controlador
      // al nombre btDigito_Click

    private void btDigito_Click(object sender, EventArgs e)
    {
      Button objButton = (Button)sender;

      if (ultimaEntrada != Entrada.DIGITO)
      {
        if (objButton.Text == "0") return;
        etPantalla.Text = "";
        ultimaEntrada = Entrada.DIGITO;
        comaDecimal = false;
      }
      etPantalla.Text += objButton.Text;
    }

    private void btComaDec_Click(object sender, EventArgs e)
    {
      if (ultimaEntrada != Entrada.DIGITO)
      {
        etPantalla.Text = "0,";
        ultimaEntrada = Entrada.DIGITO;
      }
      else if (comaDecimal == false)
        etPantalla.Text = etPantalla.Text + ",";

      comaDecimal = true;
    }


Google Maps en Windows Forms




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Google_Maps
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            {
                string calle;
                string ciudad;
                string pais;
                string codigo;

                StringBuilder consultaMapa = new StringBuilder();
                consultaMapa.Append("http://maps.google.es/maps?q=");

                calle = textBox1.Text;
                consultaMapa.Append(calle);

                ciudad = textBox2.Text;
                consultaMapa.Append(ciudad);

                pais = textBox3.Text;
                consultaMapa.Append(pais);

                codigo = textBox4.Text.ToString();
                consultaMapa.Append(codigo);

                webBrowser1.Navigate(consultaMapa.ToString());
            }
        }
    }
}



GMap en Windows Forms







Creamos un nuevo proyecto de Windows Forms a continuación descargamos las librerías correspondientes de la pagina de GMap.Net. Encontraremos dos DLL que se llaman GMap.NET.Core.dll y GMap.NETWindowsForms.dll,  las añadiremos a la subcarpeta de references, esto permitirá al código acceder a las clases GMap.Net.
Así mismo añadiremos GMapControl a nuestro cuadro de herramientas lo cual nos facilitara mucho la tarea, de tal forma que podremos establecer las propiedades del control a través del panel de Propiedades.

http://greatmaps.codeplex.com/


ManagementObjectSearcher - Información Hardware



     Me ha costado hacerlo casi un día entero y ahora me doy cuenta de que hay cosas muy mejorables. Por ejemplo el numero de serie del disco habría que modificarlo para que diera los números de serie de todos los discos del ordenador. Lo del usuario tampoco tiene mucho sentido.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Management;

namespace Informacion_H_S
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        ManagementObjectSearcher informacionprocesador = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
        ManagementObjectSearcher informacionbios = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");
        ManagementObjectSearcher informacioncdrom = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_CDROMDrive");
        ManagementObjectSearcher informaciondisco = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
        ManagementObjectSearcher informacionplaca = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard");
        ManagementObjectSearcher informacionusuario = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_UserAccount");


        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (ManagementObject infoprocesador in informacionprocesador.Get())
            {
                if (infoprocesador["maxclockspeed"] != null)
                    textBox3.Text = infoprocesador["maxclockspeed"].ToString();

                if (infoprocesador["datawidth"] != null)
                    textBox2.Text = infoprocesador["datawidth"].ToString();

                if (infoprocesador["name"] != null)
                    textBox1.Text = infoprocesador["name"].ToString();

                if (infoprocesador["Manufacturer"] != null)
                    textBox4.Text = infoprocesador["Manufacturer"].ToString();

                if (infoprocesador["processorID"] != null)
                    textBox8.Text = infoprocesador["processorID"].ToString();

            }

            foreach (ManagementObject infodisco in informaciondisco.Get())
            {
                if (infodisco["VolumeSerialNumber"] != null)
                    textBox5.Text = infodisco["VolumeSerialNumber"].ToString();
            }

            foreach (ManagementObject infobios in informacionbios.Get())
            {
                if (infobios["Caption"] != null)
                    textBox6.Text = infobios["Caption"].ToString();

            }


Capacidad de los discos - 2






using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using System.IO;

namespace EstadoDiscos
{
    public partial class Estado_Discos : Form
    {
        private long Total = 0;
        private long usado = 0;
        private long libre = 0;
        private float dibujo;
        private int angulo = 360;
        private Rectangle recto;
        LinearGradientBrush Rojo;
        LinearGradientBrush Azul;


        public Estado_Discos()
        {
            InitializeComponent();

        }
        private void dibujar_Paint(object sender, PaintEventArgs e)
        {
         recto = new Rectangle(1, 1, grafico.Width - 5, grafico.Height - 5);
     Rojo = new LinearGradientBrush(recto, Color.FromArgb(255, 5, 5), Color.FromArgb(255, 135, 135), 2000);
     Azul = new LinearGradientBrush(recto, Color.FromArgb(40, 22, 203), Color.FromArgb(111, 183, 215), 2000);
         e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

            if (dibujo != 0)
            {
                e.Graphics.FillPie(Azul, recto, 0, dibujo);
                e.Graphics.FillPie(Rojo, recto, dibujo, angulo - dibujo);
            }
            else
            {
                e.Graphics.FillPie(Azul, recto, 0, 360);
            }

        }

        private long ConvertirbytesaMB(Int64 Bytes)
        {
            long MB = Bytes / 1048576;
            return MB;
        }
        private void leer_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();

            DriveInfo[] drives = DriveInfo.GetDrives();

            foreach (DriveInfo drive in drives)
            {
                listView1.Items.Add(drive.ToString());
                try
                {
                    usado = this.ConvertirbytesaMB(drive.TotalSize - drive.TotalFreeSpace);
                    libre = this.ConvertirbytesaMB(drive.TotalFreeSpace);
                    Total = this.ConvertirbytesaMB(drive.TotalSize);
                    listView1.Items[listView1.Items.Count - 1].BackColor = Color.Beige;
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(libre.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(usado.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(Total.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("Listo");
                }
                catch
                {
                    listView1.Items[listView1.Items.Count - 1].BackColor = Color.Peru;
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Instalado");
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Instalado");
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Instalado");
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Preparado");
                }
            }
        }


Reproductor de Windows Media Player - 2


     El mismo programa que el anterior, al que le hemos ocultado los controles propios del reproductor de Windows Media y los hemos sustituido por tres controles de nuestra creación (Play, Pause y Stop).





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Reproductor_windows_Media___2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void abriToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog abrir = new OpenFileDialog();
            abrir.Filter = "Archivo mp3|*.mp3|Archivo mp4|*.mp4|Archivo avi|*.avi|Todos los archivos | *.*";
            abrir.FileName = "Tipo de archivo";
            abrir.FilterIndex = 1;
            if (abrir.ShowDialog() == DialogResult.OK)
            {
                axWindowsMediaPlayer1.URL = (abrir.FileName);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.stop();
        }
    }
}

SoundPlayer - Reproductor de Audio







using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;



namespace Reproductor_de_Audio
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Ficheros de audio (.wav)|*.wav";

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string path = dialog.FileName;
                playSound(path);
            }
        }

        private void playSound(string path)
        {
            System.Media.SoundPlayer player = new System.Media.SoundPlayer();
            player.SoundLocation = path;
            player.Load();
            player.Play();
        }
    }
}