lunes, 5 de diciembre de 2011

Elementos 3D en openGL

Pronto comenzaré a publicar desarrollo de objetos y escenarios 3D en openGL. Poco a poco iré desarrollando un shooter estilo Quake o Doom. Atentos!

lunes, 14 de noviembre de 2011

Rotar contenido de picturebox

Este código sirve para rotar el contenido de un picturebox.

Image bmp = this.picImagenes.Image;
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
picImagenes.Image = bmp;

jueves, 10 de noviembre de 2011

Dibujando coordenadas en C# y guardarlas en un archivo png

Como dibujar poligonos en C# con coordenadas de punto flotante y presentarlos en picturebox en un windows form.

private void button1_Click(object sender, EventArgs e)
{


Graphics g;
Bitmap bmp = new Bitmap(this.picImagenes.Width, this.picImagenes.Height, PixelFormat.Format24bppRgb);
g = Graphics.FromImage(bmp);
g.Dispose();
PointF[] p = new PointF[5];

p[0] = new PointF(37.2f,56.005f);
p[1] = new PointF(49.95f, 86f);
p[2] = new PointF(65.66f,103.56f);
p[3] = new PointF(82.1f,102.97f);
p[4] = new PointF(102f,89.96f);



this.picImagenes.Image = new Bitmap(picImagenes.Width, picImagenes.Height, PixelFormat.Format32bppArgb);
g = Graphics.FromImage(picImagenes.Image);
g.DrawLines(Pens.Green, p);


}

private void button2_Click(object sender, EventArgs e)
{

this.picImagenes.Image.Save("c:\\prueba\\archivo.png",ImageFormat.Png);
}

jueves, 27 de octubre de 2011

Mostrar registros con ADO.NET Entity Framework

db_pruebaModel.db_pruebaEntities context = new db_pruebaModel.db_pruebaEntities();
IEnumerable lista = from d in context.dispositivos select d;
foreach(var d in lista)
{
ListBox1.Items.Add(d.nombreDispositivo + " $ " + Convert.ToString(d.precio));
}

Insertar registro utilizando ADO.NET Entity Framework

protected void Button1_Click(object sender, EventArgs e)
{
db_pruebaModel.db_pruebaEntities context = new db_pruebaModel.db_pruebaEntities();
db_pruebaModel.dispositivos dispositivos = new db_pruebaModel.dispositivos()
{
nombreDispositivo=this.TextBox2.Text,
precio=Convert.ToDecimal(TextBox3.Text)
};
context.AddTodispositivos(dispositivos);
if (context.SaveChanges()>0)
{
//el mensaje que quieran enviar, javascript, un label, etc.-
}


}


Donde: dispositivos es el nombre de la tabla.

viernes, 7 de octubre de 2011

etiqueta xmlns no reconocida

Cuando tenemos en IIS aplicaciones que utilizan Frameworks 1.1 y 2.0 y nos aparece este error, lo podemos solucionar de la siguiente forma: Vamos a la carpeta C:\inetpub\wwwroot y modificamos el archivo web.config, eliminando el atributo xmlns del tag , que solo les quede de esta forma. Guardamos, reiniciamos IIS y probamos.

miércoles, 27 de julio de 2011

Visual Studio .NET 2003 - Error: El archivo esta siendo utilizado por otro proceso

Como resolver si no se puede generar la solucion dando el error: el archivo dll esta siendo utilizado por otro proceso. Sabemos que no esta siendo utilizado por otro proceso.
Entrar a ventana de comandosy navegar hasta: C:\WINDOWS\Microsoft.NET\v1.1.4322.0 y ejecutar el comando: aspnet_regiis -i.
Si les sigue dando problemas: Puede ser el antivirus, a mí me pasó con Kaspersky 6.0. Al bajarlo, todo se compiló correctamente.

viernes, 24 de junio de 2011

Enviar correo desde ASP.NET con archivo adjunto

dim cuerpo as string="Donde va todo el texto del cuerpo"
Dim msg As New MailMessage(Me.txtEmail.Text, "info@dondevaya.com", "Prueba", cuerpo)
Dim mailClient As New SmtpClient("servidor SMTP", 25)
Dim cred As New System.Net.NetworkCredential("usuario", "clave")


msg.Attachments.Add(New Attachment(fupDoc.PostedFile.InputStream, fupDoc.FileName))

With mailClient
.UseDefaultCredentials = False
.Credentials = cred
.EnableSsl = False
.DeliveryMethod = SmtpDeliveryMethod.Network
.Send(msg)
End With

miércoles, 16 de marzo de 2011

Consumir Servicio Web detras de un proxy

Dim svc As New Servicio
Dim nc As NetworkCredential = New NetworkCredential("usuario", "clave", "dominio")
Dim pr As New WebProxy("ip del proxy", puerto) 'puerto es un entero
pr.Credentials = nc
svc.Proxy = pr
Dim dtv As New DataView
Dim ds As New DataSet
ds = svc.getData
dtv = ds.Tables(0).DefaultView
Me.DataGridView1.DataSource = dtv

Al correrlo, ya podemos cargar el dataset devuelto en el datagrid.

sábado, 12 de marzo de 2011

Consumir Servicio Web desde Silverlight

Debido a que he buscado y buscado por mucho tiempo en Google un método para guardar datos en Silverlight, me he dado la tarea de crear un servicio web para enviar los datos a una base de datos para poder hacer una inserción de registros.
Creacion del Servicio Web.

En el servicio web agregamos una referencia a MySql.Data.MySqlClient
Creamos el siguiente método web

[WebMethod]
public void insDocuments(int doc_type, string refr, byte[] imagen, int usr, DateTime dt, int st)
{


//System.Windows.Media.Imaging.BitmapImage bImg = new System.Windows.Media.Imaging.BitmapImage();

MySqlConnection cnn = new MySqlConnection("server=localhost;User Id=root;database=db_scanning");
MySqlCommand cmd = new MySqlCommand();
cnn.Open();
string sql = "insert into documents(id_document,doc_type,doc_reference,doc_scanned,user_id,mod_date,state)" +
" VALUES(@id_document,@doc_type,@doc_reference,@doc_scanned,@user_id,@mod_date,@state)";
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
cmd.Connection = cnn;
cmd.Parameters.Add("@id_document",MySqlDbType.VarChar).Value=getCode(doc_type);
cmd.Parameters.Add("@doc_type", MySqlDbType.Int32).Value = doc_type;
cmd.Parameters.Add("@doc_reference", MySqlDbType.VarChar).Value = refr;
cmd.Parameters.Add("@doc_scanned", MySqlDbType.LongBlob).Value = imagen;
cmd.Parameters.Add("@user_id", MySqlDbType.Int32).Value = usr;
cmd.Parameters.Add("@mod_date", MySqlDbType.Datetime).Value = dt;
cmd.Parameters.Add("@state", MySqlDbType.Int32).Value = st;
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cnn.Close();
}

Despues lo invocamos desde la aplicacion Silverlight agregando la respectiva referencia a servicio.

OpenFileDialog op = new OpenFileDialog();
op.ShowDialog();
BitmapImage imageSource = new BitmapImage();
imageSource.SetSource(op.File.OpenRead());
FileStream fst = op.File.OpenRead();
byte[] bytes = new byte[fst.Length];
fst.Read(bytes, 0, bytes.Length);

svc.insDocumentsAsync(2, "REF", bytes, 1, DateTime.Today, 1);
Con esto ya podemos trabajar insertando registros a una base de datos utilizando Silverlight.

miércoles, 23 de febrero de 2011

Enlazar ListView con Dataset

Esta es la forma como enlazar un List View con un dataset creado a partir de codigo, no olvidar que la propiedad View del List View debe estar en Details.

private void Form1_Load(object sender, EventArgs e)
{
string strCnn = "CADENA DE CONEXION";
SqlConnection cnn = new SqlConnection(strCnn);
string sql = "select * from TABLA;
SqlCommand cmd = new SqlCommand(sql, cnn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
cnn.Open();
DataSet ds = new DataSet();
da.Fill(ds, "TABLA");
cnn.Close();

//creamos los encabezados del ListView que provienen del dataset

foreach (DataColumn column in ds.Tables[0].Columns)
{
listView1.Columns.Add(column.ColumnName);
}


//obtenemos los valores provenientes de la tabla.

foreach (DataRow row in ds.Tables[0].Rows)
{
ListViewItem item = new ListViewItem(row[0].ToString());
for (int i = 1; i < ds.Tables[0].Columns.Count; i++)
{
item.SubItems.Add(row[i].ToString());
}
listView1.Items.Add(item);
}





}

lunes, 14 de febrero de 2011

Linkbutton agregado en un gridview: para que hagamos lo que querramos con el:


LinkButton lnkSeleccion = (LinkButton)sender;
string arg = lnkSeleccion.CommandArgument;
Response.redirect("~/edicion.aspx?id="+ arg);


En la vista código debemos agregar el evento CommandArgument

Aqui id es el campo que vamos a enlazar de la tabla x, la cual ya debe estar enlazada al grid view
CommandArgument='<%# Eval("id) %> >Link

martes, 1 de febrero de 2011

Creación dinámica de controles

Dim i, j As Integer
j = Me.txtCantidad.Text
For i = 0 To j - 1
Dim textBox As New TextBox
Panel1.Controls.Add(textBox)
Next

sábado, 29 de enero de 2011

Tipos Genericos en C#

Esta es la forma para implementar métodos genéricos en C#. Nos sirven para la reusabilidad y seguridad de tipos.

en estos ejemplos T reemplaza al tipo....
Ejemplo sencillo...


static void Main(string[] args)
{
int[] arrayEntero = { 1, 2, 3, 4, 5 };
double[] arrayDoble = { 1.2, 3.4, 5.6, 9.8, 10.2 };
MuestraArray(arrayEntero);
MuestraArray(arrayDoble);
Console.ReadLine();
}

private static void MuestraArray (T[] arrayEntrada)
{
foreach (T element in arrayEntrada)
Console.Write(element + " ");

Console.Write("\n");

}

}


Con restriccion...

static void Main(string[] args)
{
Console.WriteLine("maximo de {0}, {1}, {2} es {3}",3.2,4.9,3.1,Maximo(3.2,4.9,3.1));
Console.WriteLine("maximo de {0}, {1}, {2} es {3}", 3, 9, 30, Maximo(3,9,30));
Console.WriteLine("maximo de {0}, {1}, {2} es {3}", "a", "b", "c", Maximo("a","b","c"));
Console.ReadLine();
}

private static T Maximo(T x, T y, T z)
where T:IComparable
{
T max = x;
if (y.CompareTo(max) > 0)
max = y;
if (z.CompareTo(max) > 0)
max = z;
return max;
}

Aqui utilizamos el método genérico Máximo, de tipo T y variables tambien de tipo T, el tipo T nos quiere decir que puede ser cualquiera: int, double, string, etc.