jueves, 28 de diciembre de 2006

Liberado primer CTP de WPF/E

Se ha liberado el primer CTP de WPF/E (o también llamado Windows Presentation Foundation/EveryWhere).
WPF/E es un sub conjunto de WPF pensado para agregar riqueza visual a las aplicaciones y páginas Web, permitiendo integrar animaciones 2D, vídeo y otras formas de interactuar con datos e información.
WPF/E es multiplataforma. Puede correr en Internet Explorer, Firefox e incluso en Safari en un Mac.
Por último, comentar que WPF/E se instala como un plug-in en los browsers.

Para mas informacion, visitar los links:

Y para descargar el CTP: http://www.microsoft.com/downloads/details.aspx?FamilyID=2b01ec7e-c3b8-47cc-b12a-67c30191c3aa&DisplayLang=en

Sandcastle - December 2006 (CTP)

Para aquellos que no lo sepan, estas utilidades permiten generar documentación de código a partir de los assemblies y sus correspondientes documentos XML que genera por ejemplo Visual Studio, a partir de los comentarios del código. Usa además Reflection para obtener documentación adicional de las posibles dependencias que pueda usar nuestra aplicación.

El link para descargar SandCastle es: http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&DisplayLang=en

Visual Studio 2005 Service Pack 1 Update for Windows Vista Beta


Ya se han solucionado algunos de los problemas que había para poder ejecutar correctamente el Visual Studio en Windows Vista.

viernes, 22 de diciembre de 2006

BcnDev.Net


Para todos aquellos que quieran participar en el grupo de usuarios de .Net de Barcelona , pasaros por la pagina http://www.bcndev.net/


Sus acciones se dirigen a la difusión, aprendizaje, e intercambio técnico comunitario acerca de productos y tecnologías vinculadas a la tecnología.NET de Microsoft.

lunes, 23 de octubre de 2006

Jusep.NET aparece en DotNetMania

En el nº 30 de la revista DotNetMania se hace referencia a este blog.
Para mi es todo un orgullo y desde aqui quiero agredecer a la revista por el detalle.

Muchas gracias!!!

jueves, 20 de julio de 2006

Mover el Botón y Crear Sombra

Código XAML

<Window.Triggers>

<EventTriggerRoutedEvent="Button.Click">

<EventTrigger.Actions>

<BeginStoryboard>

<Storyboard>

<ThicknessAnimationStoryboard.TargetProperty="Margin">

<Duration="0:0:0.5"From="50,50,50,50"To="0,0,50,50"AutoReverse="True"/>

<DoubleAnimationStoryboard.TargetName="myDropShadowBitmapEffect">

<Storyboard.TargetProperty="ShadowDepth"From="0"To="30"Duration="0:0:0.5">

<AutoReverse="True"/>

<DoubleAnimationStoryboard.TargetName="myDropShadowBitmapEffect"

<Storyboard.TargetProperty="Softness"From="0"To="1"Duration="0:0:0.5"

<AutoReverse="True"/>

</Storyboard>

</BeginStoryboard>

</EventTrigger.Actions>

</EventTrigger>

</Window.Triggers>

<ButtonMargin="10"Width="225"Height="50"Name="myButton">

¡Click paracrear la sombra!

<Button.BitmapEffect>

<DropShadowBitmapEffectx:Name="myDropShadowBitmapEffect"Color="Black"

ShadowDepth="0"/>

</Button.BitmapEffect>

</Button>



Mover el Botón con Sombra

Código XAML

<Window.Resources>
<Style TargetType="{x:Type Button}">
<
Style.Triggers>

<
Trigger Property="IsEnabled" Value="true">

<
Setter Property = "BitmapEffect">

<
Setter.Value>

<
DropShadowBitmapEffect Color="Black" Direction="320"
ShadowDepth="25" Softness="1" Opacity="0.5"/>

</
Setter.Value>

</
Setter>

</
Trigger>

</
Style.Triggers>

</
Style>

</
Window.Resources>

<
Window.Triggers>

<
EventTrigger RoutedEvent="Button.Click">

<
EventTrigger.Actions>

<
BeginStoryboard>

<
Storyboard>

<
DoubleAnimation Storyboard.TargetName="myAnimatedButton"
Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)" RepeatBehavior="1x" From="0"
To="360" Duration="0:0:1" ></DoubleAnimation>

<
DoubleAnimation Storyboard.TargetName="myAnimatedButton"
Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)" RepeatBehavior="1x" From="360"
To="0" BeginTime="0:0:1" Duration="0:0:1"
></
DoubleAnimation>

</
Storyboard>

</
BeginStoryboard>

</
EventTrigger.Actions>

</
EventTrigger>

</
Window.Triggers>

<Grid>
<
Button Name="myAnimatedButton" Height="60" Width="120"
RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center"
HorizontalAlignment="Center">

¡Click Aquí!
<
Button.RenderTransform>

<
RotateTransform Angle="0" />

</
Button.RenderTransform>

</
Button>

</
Grid>

Mover el Botón al hacer Click

Código XAML


<Window.Triggers>


<
EventTrigger RoutedEvent="Button.Click">

<
EventTrigger.Actions>

<
BeginStoryboard>

<
Storyboard>

<
DoubleAnimation Storyboard.TargetName="myAnimatedButton"
Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)" RepeatBehavior="1x" From="0" To="360"
Duration="0:0:1" ></DoubleAnimation>

<
DoubleAnimation Storyboard.TargetName="myAnimatedButton"
Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)" RepeatBehavior="1x" From="360" To="0"
BeginTime="0:0:1" Duration="0:0:1"
></
DoubleAnimation>

</
Storyboard>

</
BeginStoryboard>

</
EventTrigger.Actions>

</
EventTrigger>

</
Window.Triggers>

<Grid>
<
Button Name="myAnimatedButton" Height="60" Width="120"
RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center"
VerticalAlignment="Center">

¡Click Aqui!
<
Button.RenderTransform>

<
RotateTransform Angle="0"/>

</
Button.RenderTransform>

</
Button>

</
Grid>

Cambiar Automáticamente de color una Ellipse

Código XAML


<
Window.Triggers>

<
EventTrigger RoutedEvent="Window.Loaded">

<
EventTrigger.Actions>

<
BeginStoryboard>

<
Storyboard>

<
ColorAnimation Storyboard.TargetName="myEllipse" Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)" Duration="0:0:5" From="Black" To="White" RepeatBehavior="Forever" AutoReverse="True"/>

</
Storyboard>

</
BeginStoryboard>

</
EventTrigger.Actions>

</
EventTrigger>

</
Window.Triggers>

<
Ellipse x:Name="myEllipse" Fill="Black"/>

Girar una Ellipse

Código XAML

<Window.Triggers>
<
EventTrigger RoutedEvent="Window.Loaded">

<
EventTrigger.Actions>

<
BeginStoryboard>

<
Storyboard>

<
DoubleAnimation Storyboard.TargetName="myEllipse" Storyboard.TargetProperty="(Ellipse.Height)" From="0" To="500" Duration="0:0:3" RepeatBehavior="Forever" AutoReverse="True" />

</
Storyboard>

</
BeginStoryboard>

</
EventTrigger.Actions>

</
EventTrigger>

</
Window.Triggers>

<
Ellipse x:Name="myEllipse" Fill="DarkRed"/>

Cambiar Automáticamente el Tamaño de una Imagen

Código XAML

<Window.Triggers>
<
EventTrigger RoutedEvent="Window.Loaded">

<
EventTrigger.Actions>

<
BeginStoryboard>

<
Storyboard>

<
DoubleAnimation Storyboard.TargetName="myImage" BeginStoryboard.TargetProperty="(Image.Width)" From="0" To="300" Duration="0:0:3" RepeatBehavior="Forever" AutoReverse="True"/>

</
Storyboard>

</
BeginStoryboard>

</
EventTrigger.Actions>

</
EventTrigger>

</
Window.Triggers>

<
Image x:Name="myImage" Source="C:\Documents and Settings\AllUsers\Documentos\Mis imágenes\Imágenes de muestra\Puesta de sol.jpg"/>

miércoles, 19 de julio de 2006

Microsoft .NET Framework 3.0 - July 2006 CTP


Ya esta disponible la nueva version del .NET Framework 3.0
Se puede descargar desde este link http://www.microsoft.com/downloads/details.aspx?FamilyId=62057A6F-185F-41DB-ABE5-678F6FC388F0&displaylang=en

miércoles, 5 de julio de 2006

Microsoft Expression Interactive Designer June 2006 CTP y Microsoft Expression Graphic Designer June 2006 CTP




Ya esta disponible la nueva versión de Microsoft Expression Graphic Designer y Microsoft Expression Interactive Designer.
Estos programas nos permite diseñar objetos y formularios para posteriormente pasarlo a XAML y utlizarlo con Visutal Studio.

martes, 4 de julio de 2006

Rotar Imágenes con WinFX

Bueno, para empezar con esto del WinFX he decidido hacer una pequeña aplicación en la cual tenemos una imagen que podremos hacer rotar. La aplicación es muy simple, pero es un comienzo...
El código estará en imagenes porque blogguer no me permite escribir código XAML ya que lo interpreta como código HTML.

Código XAML


Window x:Class="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="RotarImagen" Height="357" Width="290" WindowStartupLocation="CenterScreen"

Grid
Grid.ColumnDefinitions
ColumnDefinition/ColumnDefinition
ColumnDefinition/ColumnDefinition
/Grid.ColumnDefinitions
Grid.RowDefinitions
RowDefinition Height="0.187265917602996*"/RowDefinition
RowDefinition Height="0.187265917602996*"/RowDefinition
RowDefinition Height="0.187265917602996*"/RowDefinition
/Grid.RowDefinitions
RadioButton Grid.Column="0" Grid.Row="0" Height="13.2766666666667" HorizontalAlignment="Center" Name="rb45" VerticalAlignment="Center" Width="74.25"45º</RadioButton
RadioButton Grid.Column="0" Grid.Row="1" Height="13.2766666666667" HorizontalAlignment="Center" Name="rb180" VerticalAlignment="Center" Width="74.25"180º</RadioButton
RadioButton Grid.Column="1" Grid.Row="0" Height="13.2766666666667" HorizontalAlignment="Center" Name="rb90" VerticalAlignment="Center" Width="74.25"90º</RadioButton
RadioButton Grid.Column="1" Grid.Row="1" Height="13.2766666666667" HorizontalAlignment="Center" Name="rb360" VerticalAlignment="Center" Width="74.25"360º</RadioButton
Image Grid.Row="2" Grid.ColumnSpan="2" Name="Imagen" Source="C:\Documents and Settings\All Users\Documentos\Mis imágenes\Imágenes de muestra\Invierno.jpg" Margin="62.1045572153489,12.9410731669111,50.579900124844,62.723955231492"
Image.RenderTransform
RotateTransform Angle="0"
/RotateTransform
/Image.RenderTransform
/Image
/Grid
/Window

Primero añadimos un Grid para poder insertar varios elementos en el formulario. En este grid definiremos 2 columnas y tres filas para poder insertar las diferentes opciones de rotación de la imagen.

Grid.ColumnDefinitions
ColumnDefinition/ColumnDefinition
ColumnDefinition/ColumnDefinition
/Grid.ColumnDefinitions
Grid.RowDefinitions
RowDefinition Height="0.187265917602996*"/RowDefinition
RowDefinition Height="0.187265917602996*"/RowDefinition
RowDefinition Height="0.187265917602996*"/RowDefinition
/Grid.RowDefinitions



Después añadiremos los RadioButton para escoger el grado de rotación.

Como bien recuerda Toni Recio en su blog (http://www.lascortinasdewindows.com/) es muy importante añadir la propiedad Name a todos los objetos para posteriormente poder añadir codigo en los eventos de los controles.
También hemos escogido una columna Grid.Column y una fila Grid.Row para cada objeto para que quede ubicado en una parte determinada del grid.

Por ultimo, añadiremos la imagen que queremos rotar. En este caso, como queremos que ocupe toda una fila, añadiremos la propiedad Grid.ColumnSpan que nos permite combinar las columnas.

Image Grid.Row="2" Grid.ColumnSpan="2" Name="Imagen" Source="C:\Documents and Settings\All Users\Documentos\Mis imágenes\Imágenes de muestra\Invierno.jpg" Margin="62.1045572153489,12.9410731669111,50.579900124844,62.723955231492"

Una parte importante de la rotación de la imagen es el siguiente codigo que viene despues de insertar la imagen.

Image.RenderTransform
RotateTransform Angle="0"
/RotateTransform
/Image.RenderTransform

Despues de varios intentos fallidos para que funcione la aplicación, encontre la solucion en añadir la propiedad Angle="0" Sin esta propiedad nos dara un error la aplicación al intentar rotar la imagen.

El diseño del formulario quedaria de la siguiente manera:




Source

' Interaction logic for Window1.xaml
Partial Public Class Window1

Inherits Window

Public Sub New()
InitializeComponent()
End Sub

Private Sub rb45_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles rb45.Click

Dim Angulo As Double = 45
Dim Pos As Double = 90

Imagen.RenderTransform.SetValue(RotateTransform.CenterXProperty, Pos)
Imagen.RenderTransform.SetValue(RotateTransform.CenterYProperty, Pos)
Imagen.RenderTransform.SetValue(RotateTransform.AngleProperty, Angulo)

End Sub

Private Sub rb90_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles rb90.Click

Dim Angulo As Double = 90

Imagen.RenderTransform.SetValue(RotateTransform.CenterXProperty, Angulo)
Imagen.RenderTransform.SetValue(RotateTransform.CenterYProperty, Angulo)
Imagen.RenderTransform.SetValue(RotateTransform.AngleProperty, Angulo)
End Sub

Private Sub rb180_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles rb180.Click

Dim Angulo As Double = 180
Dim Pos As Double = 90

Imagen.RenderTransform.SetValue(RotateTransform.CenterXProperty, Pos)
Imagen.RenderTransform.SetValue(RotateTransform.CenterYProperty, Pos)
Imagen.RenderTransform.SetValue(RotateTransform.AngleProperty, Angulo)

End Sub

Private Sub rb360_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles rb360.Click

Dim Angulo As Double = 360

Imagen.RenderTransform.SetValue(RotateTransform.AngleProperty, Angulo)

End Sub

End Class

Primero deberemos seleccionar el control y el metodo que queremos utilizar.
Una vez seleccionado, declaremos dos variables de tipo Double para asignar el grado de rotación y también la posicion del eje, ya que al hacer la rotación, éste cambia de posicion.

Imagen.RenderTransform.SetValue(RotateTransform.CenterXProperty, Pos)
Imagen.RenderTransform.SetValue(RotateTransform.CenterYProperty, Pos)

Por ultimo, aplicaremos la propiedad RenderTransfrom al objeto imagen y le asignaremos un nuevo valor de rotación.

Imagen.RenderTransform.SetValue(RotateTransform.AngleProperty, Angulo)

Con todo esto ya tenemos nuestra pequeña aplicación basada en WinFX.
Hay que destacar que se nota que todavia esta en fase Beta (en este caso la 2), ya que al producirse errores, hace que se cierre el Visual Studio. Y sobretodo se nota mucho en la velocidad de las aplicaciones (supongo que por las tarjetas graficas).

Seguiremos trabajando y añadiendo futuras aplicaciones al blog!!



martes, 27 de junio de 2006

Nuevo .NET Framework 3.0 - versión CTP de Junio de 2006


Microsofoft ha sacado una nueva pre-release de Microsoft .NET Framework 3.0Se puede descargar de la pagina http://www.microsoft.com/downloads/details.aspx?FamilyID=8D09697E-4868-4D8D-A4CF-9B82A2AE542D&displaylang=en

Web sobre Windows Vista, Windows SDK and .NET Framework 3.0 (formerly WinFX) Beta


En la página http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx
podremos encontrar todo lo relacionado con las nuevas versiones de Windows Vista y .NET framework 3.0. Podremos descargar las ultimas versions, ver documentacion, ejemplos y soporte tecnico.

lunes, 26 de junio de 2006

Comunidades MSDN

Si quereis estar informados o participar en alguna comunidad MSDN sobre .NET, hay una pagina donde se encuentran las mejores comunidades MSDN en español http://www.microsoft.com/spanish/msdn/community/g_usuarios_esp.mspx

Artículos WPF y .NET

En la pagina de http://www.devx.com/dotnet/Door/31645 hay varios artículos sobre WPF y .NET muy interesantes.
El único problema es que está en ingles.

Otra pagina interesante donde puedes compartir proyectos y experiencias con otros desarrolladores de todo el mundo es http://www.codeplex.com/
También en ingles.

Un blog donde también se habla sobre XAML es http://www.xamlblogs.com/ Y como no, en ingles.

Visual Basic 9.0


Si queréis echar un vistazo a todo lo relacionado con la futura versión de Visual Basic y el Visual Studio Orcas, pasaros por este link: http://msdn.microsoft.com/vbasic/future/default.aspx?pull=/library/en-us/dnvs05/html/vb9overview.asp

Está en ingles pero es un articulo muy interesante que merece la pena leer.

XAML


XAML (siglas del inglés para Extensible Application Markup Language, Lenguaje de Formato para Aplicaciones Extendibles y pronunciado "Zammel") es el lenguaje de formato para la interfaz de usuario para la Base de Presentación de Windows (WPF por sus siglas en inglés), el cual es uno de los "pilares" de la interfaz de programación de aplicaciones WinFX.
XAML es un lenguaje declarativo basado en XML, optimizado para describir gráficamente interfaces de usuarios visuales ricas desde el punto de vista gráfico, tales como las creadas por medio de Macromedia Flash. XUL y UIML son otros ejemplos de lenguajes de interfaz basados en XML. SVG es otro lenguaje de este tipo propuesto por la organización W3C, el cual soporta gráficos, animaciones, audio y video integrados, eventos y comportamiento descrito por medio de escritura y puede ser utilizado como lenguaje de intefaz basado en XML.
En su uso típico, los archivos tipo XAML serían producidos por una herramienta de diseño visual, como Microsoft Visual Studio o Microsoft Expression (actualmente en versión beta). El XML resultante es interpretado en forma instantánea por un sub-sistema de despliegue de Windows Vista que reemplaza al GDI de las versiones anteriores de Windows. Los elementos de XAML se interconectan con objetos del Entorno Común de Ejecución para Lenguajes. Los atributos se conectan con propiedades o eventos de esos objetos.
XAML fue diseñado para soportar las clases y métodos de la plataforma de desarrollo .NET que tienen relación con la interacción con el usuario, en especial el despliegue en pantalla. El acrónimo XAML originalmente significaba Extensible Avalon Markup Language, Lenguaje de Formato para Extensibilidad de Avalon; habiendo sido Avalon el nombre clave original de la Base de Presentación de Windows, nombre que engloba a este grupo de clases de .NET.

Link: http://www.xamlon.com/whatisxaml.aspx

.NET Framework 3.0


Si teneis curiosidad por saber mas sobre el nuevo framework, visitad la web http://wcf.netfx3.com/
Podreis encontrar algun ejemplo, herramientas y estar puntualmente informados sobre todas las novedades que se produzcan.

Otro link que os recomiendo es el de Toni Recio http://www.lascortinasdewindows.com/
Un blog donde explica todo sobre WPF (Windows Presentation Foundation) , .NET 3.0 Y XAML desde el punto de vista de un programador.

WinFX ahora es .NET Framework 3.0


Ante la pregunta y confusión sobre si WinFX remplazará al .NET Framework, cuando de hecho WinFX = Win [WinAPI] + FX [.NET Framework], Microsoft ha decidido ya no dejar dudas en ello por lo que a partir de hoy WinFX cambia su nombre a .NET Framework 3.0.
El cambio es sólo nominal, todo lo demás queda tal y como estaba en WinFX. Por lo que entonces el llamado ".NET Framework 3.0" consiste de todo lo que trae consigo el .NET Framework 2.0 propiamente dicho, WCF (Windows Communication Foundation), WPF (Windows Presentation Foundation), WF (Windows Workflow Foundation), y WCS (Windows CardSpace, aka InfoCard).

Link: http://blogs.msdn.com/somasegar/archive/2006/06/09/624300.aspx

LINQ para .NET


El proyecto LINQ de Microsoft son una serie de extensiones que permitirán a .NET (C# y Visual Basic) acceder a funciones de consulta y transformación de colecciones de datos de forma integrada.
Lo interesante del proyecto es que permite accede de modo uniforme a bases de datos, ficheros XML y colecciones .NET. Con estas extensiones es posible, por ejemplo, escribir el siguiente código: var productos =
from p in products
where p.UnitsInStock == 0
select p;

Y esto funcionará sea “products” una colección (un array, por ejemplo), una tabla en una base de datos o una serie de elementos en un fichero XML.

Más información:
Proyecto LINQ
101 ejemplos de uso donde podemos descubrir toda su potencia.
Video que habla sobre LINQ: http://download.microsoft.com/download/2/5/6/2565a4e5-0d9e-43e8-bbc7-57de357fdcc3/LINQ_512kbps.wmv