XAMLCast – 2a Temporada – Episódio 9 – Finger Style, SLARToolkit, Windows Phone 7 e pré-MIX10 10/3/10
Olá olá pessoal!

Este é o XAMLCast pré-MIX10.
Estamos ansiosos para a chegada deste grande evento que irá nos trazer grandes novidades e anúncios. E para nossa alegria, e como já havíamos falado antes, o XAMLCaster Kelps estará em Las Vegas cobrindo o evento e enviando tudo em primeira mão!
Neste episódio falamos de:
- Finger Style – Artigo fantástico do Charles Petzold sobre Multitouch em Silverlight
- MultiTouchVista – simulador de multitouch com múltiplos mouses para Windows
- Artigo do Roberto Sonnino (em inglês) sobre touch com WPF e MultiTouchVista
- SLARToolkit – A experiência de AR (Realidade Aumentada) com Silverlight virou um framework
- Aplicação do correio americano para tamanhos de caixas com AR
-
Não confunda:
- Blender – programa de modelagem 3D
- Balder – engine 2D/3D que funciona com Silverlight
- Blend – ferramenta para design de aplicações WPF/Silverlight
- Concurso de Silverlight/WPF da Magenic Studios – prêmios até 500 US$ + 3000 US$ pro Haiti
- Copa de Talentos Microsoft
- Anuncio oficial do Silverlight no Windows Phone 7
- Video no TechEd Middle East mostrando XNA no Windows Phone, Xbox e Windows
- MIX10
- HVP no MIX
- Video do ScottGu no Channel 9 falando sobre o MIX
Bolão do MIX10!
Envie sua previsão do que irá acontecer no MIX10. Para participar, basta referenciar a hashtag #bolaoxamlcast no seu post do twitter.
Ajudem o XAMLCast a entrevistar o ScottGu no MIX10
Envie um tweet (em inglês) para @ScottGu pedindo uma entrevista com o @XAMLCast (Brazilian Podcast) ou @kelps.Com muitos pedindo, o acesso torna-se mais fácil.
Se quiserem, podem pedir para outras “personalidades” do .net/WPF/SL, como Scott Hanselman, Phil Haack, John Papa, S. Somasegar, Tim Heuer, Karen Corby, Glenn Block… o Kelps vai ter trabalho em Vegas!
Atenção!
O XAMLCast da semana que vem será especial sobre o MIX10! Assim, em vez de um grande episódio, soltaremos as notícias aos poucos, o mais rápido possível, conforme o Kelps for mandando. Por isso, não deixe de assinar e seguir o XAMLCast para não perder nada!
Para assinar:
- Feed RSS: http://www.xamlcast.net
- iTunes/iPod: pcast://www.xamlcast.net
- Zune: zune://subscribe/?XAMLCast=http://www.xamlcast.net
O XAMLCast também está no Twitter!
- Twitter oficial: @xamlcast (e hashtag #xamlcast)
- Siga os XAMLCasters:
- Adicione o Twibbon do XAMLCast ao seu avatar!
Até o próximo!
Abraços,
Kelps, Roberto Sonnino e Rodrigo Kono
2 commentsCategories: Dicas, Microsoft, Novidades, Silverlight, WPF, XAMLCast
Quick tip: Convert images from any format to XAML 8/3/10
Hey there!
For today’s quick tip I’ll show how to convert images from any 2D vector format (and I really mean ANY) to XAML. It’s pretty simple!
Note: if your image is in a bitmap format (e.g. JPEG, PNG, GIF, PSD, etc), you should simply convert it to PNG or JPEG using any image editor and use it directly as a bitmap image in your app. This method is only necessary for vector file formats.
Note 2: There are specialized converters for many formats that might yield better results. I’d recommend searching the web to see if there isn’t a converter for your format before trying this method.
Requirements:
- Expression Design (tip: Students can get it for free with Dreamspark)
- PDFCreator
Steps:
- Open your image in your favorite image viewer. In this example, I’ll open an SVG from Wikipedia with Firefox.

- Print the image to PDF with PDFCreator.

- Rename the PDF file to AI using Windows Explorer. (e.g. “image.pdf” becomes “image.ai”)


- Open the AI file with Expression Design. You might now want to delete some parts of the image that you don’t want to be exported.

- Save it to XAML as usual using File > Export… in Expression Design.

Yes, it’s THAT simple! Enjoy!
See you next time,
Roberto
This blog post is also available on CodeProject
4 commentsCategories: Dicas, Expression, Silverlight, WPF
Quick WPF/Silverlight tip: Generic Converter MarkupExtension 4/3/10
Hey there!
It’s been quite a while since the last English post – XAMLCast has been taking much of my blogging time
Today’s tip is an expansion of a method originally developed by Dr. WPF in this post: http://www.drwpf.com/blog/Home/tabid/36/EntryID/48/Default.aspx .
Usually, when working with Converters in WPF/SL, we always follow the same steps:
- Create a class that derives from IValueConverter:
public MyConverter : IValueConverter {} - Implement Convert (and sometimes ConvertBack)
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { // convert and return something } - Instantiate the converter as a resource and use it:
<ResourceDictionary ...> <local:MyConverter x:Key="TheConverter" /> </ResourceDictionary> ... {Binding Converter={StaticResource TheConverter} ...}
Well, it works but it’s not a compact syntax. Following Dr. WPF’s idea, we can use a MarkupExtension to replace the StaticResource by a static instance of the Converter:
public class MyConverter: MarkupExtension, IValueConverter
{
private static MyConverter _converter;
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something (if needed)
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_converter == null)
_converter = new MyConverter();
return _converter;
}
}
Usage:
xmlns:conv="[Path to namespace that contains the converter]"
...
{Binding Converter={conv:MyConverter}}
Now that’s pretty!
The only problem is that with this method, you’d have to repeat the implementation of the ProvideValue for each converter you create, and we programmers hate repeating ourselves
One solution I found is to create a generic abstract class that will contain that implementation, and derive each converter from that class. It’s cleaner and works the same:
using System;
using System.Windows.Data;
using System.Windows.Markup;
namespace VirtualDreams.Converters
{
[MarkupExtensionReturnType(typeof(IValueConverter))]
public abstract class ConverterMarkupExtension<T> : MarkupExtension where T : class, IValueConverter, new()
{
private static T _converter;
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_converter == null)
{
_converter = new T();
}
return _converter;
}
}
}
Let’s apply it to MyConverter:
public class MyConverter: ConverterMarkupExtension<MyConverter>, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something (if needed)
}
}
Usage:
xmlns:conv="[Path to namespace that contains the converter]"
...
{Binding Converter={conv:MyConverter}}
Simpler, less repetitive – that’s the way I like it!
Happy converting!
Roberto
This blog post is also available on CodeProject
Comment this postCategories: .net, Dicas, Silverlight, WPF
