Friday, August 1, 2008

Imágenes vectoriales vs. Mapas de bits

Las imágenes de mapa de bits están formadas por puntos, llamados píxeles, organizados en una cuadrícula. Cuando se edita una imagen de mapa de bits, se modifican los píxeles, no las líneas y curvas. Las imágenes de mapa de bits dependen de la resolución, es decir, los datos que las definen están fijos en una cuadrícula que tiene un tamaño determinado. Cuando se aumenta el tamaño de un elemento gráfico de mapa de bits, los píxeles se redistribuyen en la cuadrícula, lo que puede dar lugar a que sus bordes queden desiguales.



Los gráficos vectoriales representan las imágenes mediante líneas y curvas, denominadas vectores, que incluyen información de color y posición. Cuando se edita una imagen vectorial, se modifican las propiedades de las líneas y curvas que describen su forma. Las imágenes vectoriales son independientes de la resolución, lo que significa que es posible desplazar, cambiar el tamaño, alterar la forma, modificar su color y visualizarlas en dispositivos de salida de diferente resolución, sin que cambie la calidad de su aspecto.

La principal ventaja de las imágenes vectoriales es su capacidad de almacenar los dibujos en un archivo muy compacto, ya que sólo se requiere la información necesaria para generar cada uno de los vectores. Los vectores pueden definir algunas propiedades de los objetos como el grosor de la línea o incluso el color de relleno de los objetos.

Los cambios de tamaño de las imágenes vectoriales no afectan a la calidad de las mismas, pues se actualizan de forma matemática todas las nuevas relaciones y posiciones de los elementos geométricos que las componen.

Los dibujos se pueden escalar (reducir o aumentar el tamaño de la imagen), sin que se produzca una pérdida de información, puesto que si el dibujo aumenta o disminuye de tamaño el programa recalcula automáticamente la posición y longitud de cada uno de los vectores que dibuja cada uno de los elementos

Sin embargo, como en todo hay inconvenientes o limitaciones, el principal inconveniente de las imágenes vectoriales es su falta de eficacia para representar imágenes de tipo fotográfico

Les dejo con algunos sitios de los cuales se pueden descargar de forma gratuita imágenes vectoriales

http://vector4free.com/
http://www.vecteezy.com/

Tuesday, July 22, 2008

Cómo ocultar un tabpage

Palabras Claves: Cómo ocultar un TabPage de un TabControl en VB.NET 2005 How to hide TabPage

Resulta que tenía que ocultar un tabPage a partir de un checkBox, busqué todas sus propiedades y no encontré un ".Visible" (como suelen traer algunos controles para ponerlos en visible=true o visible=false) Y me dije a mi misma: "Jum, no creo que no se pueda, debe haber alguna forma".

Y así fue, es algo súper sencillo, aunque encontré dos formas, recomiendo una que por lógica me parece lo más óptimo. Con la segunda forma ni siquiera probé pero igual así se las dejo las dos (en mi código, la que está comentada es la segunda forma):


Primera Forma:
Para ponerlo en invisible:Me.TabPage.Parent = Nothing

Para ponerlo en visible:Me.TabPage.Parent = Me.TabControl

Segunda Forma:
Para ponerlo en invisible:Me.TabControl.TabPages.Remove(Me.TabPage)

Para ponerlo en visible:Me.TabControl.TabPages.Add(Me.TabPage)


If Me.getparVerTabSeguridad = "0" Then
'Me.tbcMantenimiento.TabPages.Remove(Me.tbpSeguridad)
Me.tbpSeguridad.Parent = Nothing
Else
'Me.tbcMantenimiento.TabPages.Add(Me.tbpSeguridad)
Me.tbpSeguridad.Parent = Me.tbcMantenimiento
End If

Thursday, May 22, 2008

Null - nothing

VB.NET y C# son lenguajes de programación de la plataforma .NET que más se utilizan y no es mentira que cuando se programa con uno durante mucho tiempo y luego quiere pasar a otro como que se confunde jejeje... a mi me pasa con los puntos y comas :S Cuando estoy en C# olvido terminar la sentencia con un punto y coma ah y las llaves, méndigas llaves, jejeje.

Ya, la vaina es que quería hacer un cambio de un pedazo de código de C# a VB.NET en cuanto al "null" y el "nothing", por si alguien está en las mismas, aquí les dejo la solución

En C#


while (objeto != null)´
{
//aqui el cuerpo
}

if (objeto == null)
{
}


En VB.NET

While Not objeto Is Nothing
'aqui el cuerpo
End While

If ojeto Is Nothing

End If

Donde 'objeto' es un variable cualquiera.

Sencillo, no?

Wednesday, May 21, 2008

Cómo desglosar Un rango De fechas

Hace un poco más de un mes cuando empezé a hacer mis consultas en SQL para mis reportes, me encontré con que necesita desglosar un rango de fechas para mostrar el horario de los empleados. Bueno, lo primero que me dijeron es: eso se soluciona utilizando TABLAS TEMPORALES. Una tabla temporal se la usa para guarda datos que sólo sirven para el proceso que se está realizando. Sólo se la tiene disponible en ejecución.

Ok, resulta que como datos sólo tengo un rango de fechas: del '01/05/2008' al '31/05/2008' y lo que se pretende hacer es desglosarlo... o sea
01/05/2008
02/05/2008
03/05/2008
04/05/2008
...
31/05/2008

Ok, eso es lo que voy a mostrarle... y cómo usar esa tabla dependerá de sus requerimientos.

1) Creamos un Stored Procedure (Un stored procedure o procedimiento almacenado es un programa (o función) el cual está físicamente almacenado en una base de datos)


CREATE PROCEDURE spDias
@fechaini datetime,
@fechafin datetime
AS
BEGIN
create table #Fecha
(codigo int, fecha datetime)
declare @dif as int
declare @cont as int
declare @fechaact as datetime
set
@dif=datediff(day,@fechaini,@fechafin)
set
@cont=1
set @fechaact=@fechaini-1
WHILE (@cont<=@dif+1) BEGIN
set @fechaact=dateadd(day,1,@fechaact)
INSERT INTO #Fecha VALUES (@cont,@fechaact)
set @cont=@cont+1
END

select * from #Fecha
END


Ok, copian ese código en el editor de consultas del Microsoft SQL Server Management Studio o del que estén usando, en mi caso yo utilizo el que mencioné.

Crear una tabla temporal es casi similar a una tabla normal con la diferencia que se le antepone un numeroal (#) al nombre de la tabla.

Ok, una vez ejecutado ese código si está todo Ok, tienen que salirle: "Query executed successfully"

2) Luego llaman al stored procedure con la siguiente línea:


exec spDias '2008/05/01','2008/05/31'

Y obviamente, tiene que generar el desglose de ese rango de fechas, así:


Sencillo, no?

Thursday, April 24, 2008

Visual studio 2008 y SQL server 2008

El año pasado fui a un evento auspiciado por Microsoft, también en Los Tajibos en el que mostraron todas las características que ofrece el Visual Studio 2008. A full! Aquí les presento algunas (descritas por Alexander Jiménez) y también sobre SQL Server 2008:

Visual Studio 2008
Ambiente de Desarrollo Integrado (IDE): Si instalas Visual Studio 2008 en una computadora con Visual Studo 2005, laprimera vez que inicies Visual Studio 2008 puedes importar todas las configuraciones que tenias en Visual Studio 2005.Si tienes snippets personalizados o de una empresa, puede que necesites pasar estos de manera manual. Otra de las características es que el menu Community (Comunidad) fue removido de la barra principal. Los comandos internos del menu, como Ask a Question (Haz una pregunta) y Check Question Status (Cheque el estatus de la pregunta) se unieron para formar una opción denominada MSDN Forums dentro del menu Help (Ayuda). El comando Send Feedback (Sugerencias), cambio denombre y ahora se llama Report a Bug (Reporta un problema) y esta dentro del propio menu Help. La que me agrada más es el soporte de diseñador de clases (Class Designer) de Visual Studio a C++ .NET. Lo malo es que solamente se utiliza para documentación y visualización, es decir, no trae soporte a código.
Proyectos y Soluciones: Soporte a Windows Presentation Foundation de manera nativa. Cuando se inicia un proyecto, seleccionando el lenguaje, se pueden crear cuatro (4) tipos de proyecto WPF:
WinFX Windows Application
WinFX Web Browser Application
WinFX Custom Library
WinFX Service Library
Una de las mejores características que se agregaron a Visual Studio 2008 es la capacidad de especificar el Framework sobre el cuál se desea compilar. En las cajas de dialogo Advanced Compiler Settings (VB) y Advanced Build Settings (C#), ahora existe un nuevo campo denominado Target Framework que permite seleccionar lo siguiente:

.NET Framework 2.0
.NET Framework 3.0
.NET Framework 3.5

Implementación: ClickOnce ha sido mejorado para brindar soporte a Windows Vista:
Ahora soporta la implementación de proyectos WPF Web Browser Application. Como estos proyectos requieren una implementación especial y una configuración adicional de seguridad, ahora Visual Studio provee de los asistentes y pasos requeridos para configurar dichos elementos.
Ahora las empresas que desarrollan software comercial (ISVs), toman ventaja de una característica interesante. Ahoran pueden firmar nuevamente el manifiesto de la aplicación, colocando elementos dentro del manifiesto que permiten identificar a la empresa.
Soporte para publicación a través del Publicador de Proyectos o del Asitente de Publicación.

Edición: Ahora, tenemos una herramienta para el diseño de hojas de estilo (CSS). También se agrego tecnología Intelisense a JScript en los proyectos AJAX. Además, el diseñador de WPF permite crear aplicaciones y controles personalizados en el IDE.

SQL Server 2008
Entities (Entity Data Model): Se creo un framework sobre ADO para proveer a los desarrolladores un modelo de abstracción para programar en alto nivel (clases y objetos) y manipular información relacional (BD). Esta característica de abstracción se brinda gracias a la tecnología LINQ, la cuál es una tecnología que permite hacer consultas contra la información que se maneja en las entidades, sin utilizar T-SQL.

Ocassionally Connected Systems: También se agregó características de desconexión temporal de los datos a través del modelo de “Sistemas Conectados Ocasionalmente”.

FileStream: También (y creo que es la característica que me agrada más de SQL) es la capacidad de poder almacenar cualquier tipo de datos, a través del nuevo tipo de dato FileStream.