Carlos Blog
Carlos Blog
Archivos en la Categoría: WPF
Chronos v2.0 Beta 3 available for download
Publicado por en 2 diciembre 2010
Release notes:
- Updated introduction document.
- Updated Visual Studio 2010 Extension (vsix) package.
- Added horizontal scrolling to the main window TaskBar.
- Added new styles for ListView, ListViewItem, GridViewColumnHeader, …
- Added a new WindowViewModel class (allowing to fetch data).
- Added a new Navigate method (with several overloads) to the NavigationViewModel class (protected).
- Reimplemented Task usage for the WorkspaceViewModel.OnDelete method.
- Removed the reflection effect from the shortcut style.
- Removed the shadow effect from Widgets and Windows.
- Removed opacity effect when a window or widget is deactivated (instead the header progressbar will change its color).
- Changed the header rectangle, on Windows and Widgets, by a progressbar that will become in indeterminate state when the window ViewMode is set to Busy, the progressbar gets filled with solid colors instead of the gradients used in the old rectangle.
- Changed Window Visibility to Collapsed when minimized.
- Changed Workspace Window style ZoomView popup StayOpen property value to false.
- Renamed all window styles, and added new ones.
- Renamed all widget styles.
Evolución del estilo visual de Chronos
Publicado por en 18 noviembre 2010
Chronos 2.0 Beta 2 available for download
Publicado por en 8 noviembre 2010
Release Notes
- Added cached composition on windows & widgets for Render Tier 0/1 machines (this should help to improve window & widget dragging performance).
- Added a simple widget configuration system.
- Metro theme design time fixes & improvements
- Restyled login window with a zune-like style.
- Shell window header changes to bring it to front when the mouse is over it
- Bug Fixes.
The download is available here.
WPF 4 Cached composition tests with Chronos
Publicado por en 3 noviembre 2010
I have been doing some tests with the WPF 4 cached composition in chronos as a way of try to improve performance when dragging windows and widgets on Render Tier 1 machines.
Using cached composition on windows and widgets improves the dragging performance dramatically, but, the text maybe rendered a bit blurry, while it remains perfectly readable (it’s the first time i use the cached composition support of WPF 4 so maybe i have done something wrong).
I have done the test on a Rendering Tier 1 machine with Windows XP at 1280×1024, using two fonts:
- Segoe WP (It’s the default font on Chronos v2.0)
- Segoe UI.
The Cache mode property in the WorkspaceWindowStyle and WidgetStyle styles has been set as:
<BitmapCache EnableClearType="True" RenderAtScale="1" SnapsToDevicePixels="True" />
And finally the TextFormatting mode has been set as Display for one of the tests.
<Setter Property="TextOptions.TextFormattingMode" Value="Display" />
The screenshots shows the Chronos Navigator widget
- Without using cached composition.
- Using Cached composition.
- Using Cached composition and the Display Text Formatting mode.
Here are the results when using Segoe WP.
![]()
And here when using Segoe UI.
Text rendering was better when using Segoe UI font, but that was expected.
Hope i will include cached composition support on widgets and windows in the Beta 2 of Chronos for Rendering Tier 1 machines.
Update: Test on Rendering Tier 2 machine, Windows 7 at 1920×1200, using the Magnifier Tool at 300%, using Segoe WP font
Chronos WPF 2.0 Beta 1 available for download
Publicado por en 23 octubre 2010
Release Notes
Chronos v2.0 Beta 1
- Metro theme
- New Digital clock Widget
- Solution reorganization
- Changes on MVVM support
- Logging support changed to use NLog
- Improved XML documentation comments
- Lots of minor changes & refactorings
Source code, binaries, introduction document and ClickOnce installer are available here
Chronos 2.0 sources available in codeplex.
Publicado por en 21 octubre 2010
Espero publicar la Beta 1 pronto. En la versión 2 se incluyen entre otras novedades el theme de Metro y documento de introducción a Chronos (XPS en inglés)
chronos v1.0 disponible en codeplex
Publicado por en 27 septiembre 2010
La descarga está disponible aquí.
chronos con estilo metro
Publicado por en 1 septiembre 2010
Chronos v1.0 RC 1 disponible en codeplex
Publicado por en 14 abril 2010
La descarga está disponible aquí.
chronos: escritorios virtuales
Publicado por en 2 marzo 2010
Aprovechando los cambios que he estado haciendo la última seana para replantear una parte de chronos (tengo pendiente escribir un post sobre el tema), estos dos últimos dias he aprovechado para implementar los escritorios virtuales (bueno va a dar soporte a dos escritorios solamente por el momento).
El diagrama de clases para los escritorios virtuales queda así (por el momento)
En la ventana principal los escritorios se registran como escritorios virtuales así
<desktopControls:Desktop x:Name="VirtualDesktop01" Grid.Row="3" Id="94fa801f-bef7-437a-ba75-352f1ede6fb9" Visibility="Collapsed" windows:VirtualDesktopManager.IsDesktop="True" dragdrop:DragDropManager.IsDropTarget="True" Background="Transparent" AllowDrop="True" SnapsToDevicePixels="True" ClipToBounds="False"> </desktopControls:Desktop> <desktopControls:Desktop x:Name="VirtualDesktop02" Grid.Row="3" Id="2afc760e-9450-448d-9f28-5311c49e4773" Visibility="Collapsed" windows:VirtualDesktopManager.IsDesktop="True" dragdrop:DragDropManager.IsDropTarget="True" Background="Transparent" AllowDrop="True" SnapsToDevicePixels="True" ClipToBounds="False"> </desktopControls:Desktop>
El Id servirá para identificar, internamente, una instancia concreta de un escritorio y el nombre se utilizará para el archivo que se generará al guardar el escritorio.
La “dependency property” VirtualDesktopManager.IsDesktop se
encargará de registrar el escritorio virtual.
El ViewModel de la ventana principal tiene un nuevo comando para cambiar de escritorio
public ICommand SwitchDesktopCommand { get { if (this.switchDesktop == null) { this.switchDesktop = new ActionCommand(() => OnSwitchDesktop()); } return this.switchDesktop; } }
que se encargará de realizar el cambio de la siguiente forma
/// <summary> /// Handles the switch desktop command action /// </summary> private void OnSwitchDesktop() { ServiceLocator.GetService<IVirtualDesktopManager>().SwitchDesktop(); }
La clase VirtualDesktopManager está declara como un servicio de nRoute
[MapService(typeof(IVirtualDesktopManager), InitializationMode=InitializationMode.WhenAvaliable, Lifetime=InstanceLifetime.Singleton)] public sealed class VirtualDesktopManager : ObservableObject, IVirtualDesktopManager
tiene métodos para, cambiar de escritorio, activar el escritorio por defecto (que por el momento será siempre el primero registrado), visualizar una ventana, widget o acceso directo en el escritorio activo, etc. En general los métodos de esta clase se limitan a llamar a los métodos equivalentes de la clase que representa el escritorio virtual (que debe ser una instancia de VirtualDesktop).
Ahí va un video mostrando el cambio de escritorio (está grabado con camstudio, la calidad no es muy buena … pero como ejemplo debería ser más que suficiente)