Welcome to MSDN Blogs Sign in | Join | Help

Because the Silverlight 2 RC that was released is aimed primarily at developers wishing to update their projects to the final version of Silverlight 2 due out sometime this year, we didn’t provide an update to Deep Zoom Composer because most everyone who views Deep Zoom content will still be on Silverlight 2 Beta 2.

Instead, we have provided you with the updated project templates that are compatible with Silverlight 2 RC:


folderfiles Download Updated Deep Zoom Composer Project Templates

Once you have downloaded the above ZIP file, extract its contents to your [Program Files]\Microsoft Corporation\Deep Zoom Composer\ folder. Your ZIP file contains an updated version of the DeepZoomProject folder, so your old files will be overwritten with your new ones.

Anyway, once you have overwritten your old files, if you run Deep Zoom Composer and preview your output via the Export view’s Silverlight tab, you should be able to see and interact with your Deep Zoom images.

Comment below if you are running into any issues or things just aren’t working.

Cheers!
Kirupa

Today, we have released a preview of Expression Blend 2 Service Pack 1 that allows you to create content for the release candidate of Silverlight 2. You can download the Service Pack from the following location:


blendicon Download Expression Blend 2 SP1 Preview

This Service Pack provides you with all of the functionality you had with our earlier Expression Blend 2.5 June 2008 Preview. Besides allowing you to create new projects for WPF, Silverlight 1, and Silverlight 2 RC, we are also exposing new platform functionality like Font Embedding / Subsetting for Silverlight 2 projects. More on this new functionality in future blog posts.

One thing to note, which is different from how we handled releases in the past, is that Expression Blend 2 SP1 Preview will install on top of Expression Blend 2. This will not be a side-by-side installation. This service pack is also an evolution of Expression Blend 2.5, so there will be no future Expression Blend 2.5 releases.

You can find more information on the FAQ page we have created for Expression Blend 2 / SP1.

Cheers!
Kirupa & the Expression Blend Team

In Expression Blend 2, when you choose to edit a code file or insert an event handler for an event, by default, Visual Studio will be launched. If you have multiple versions of Visual Studio (VS) installed, though, you may find that a different version of VS than the one you intended to open will get launched. The most common case is where you have both VS 2005 and VS 2008 installed, but VS 2005 gets launched by Blend instead of VS 2008.

The fix for this involves editing your registry. From the Run prompt (WinKey + R), type regedit and press enter:

image

With your Registry Editor now running, navigate to HKEY_CLASSES_ROOT\VisualStudio.DTE.9.0\CLSID. Copy the Value Data from this key:

image

With that value copied, go to HKEY_CLASSES_ROOT\VisualStudio.DTE\CLSID, and overwrite its existing value with the data you just copied a few seconds.

This change should let Expression Blend know to launch Visual Studio 2008 instead of Visual Studio 2005.

Thanks,
Jeetendra “Jeetu” Kukreja

Since we released Deep Zoom Composer a while ago at MIX, we relied extensively on all of you to both create cool things using it as well as suggest new features for subsequent releases. Another major area that many of you have helped us with is documenting some of the cool things that you all have done with Deep Zoom.

In this post, I’ll try to point out some of the cool documentation to help you out in your deep zoom quest:

  • Working with Collections & Deep Zoom Primer
    Jaime Rodriguez provides two great overviews on how Deep Zoom works and how you can manipulate the collections in greater detail.
     
  • A Deep Zoom Blog
    Lutz Gerhard is one of the people responsible for Deep Zoom in Silverlight, and his blog provides valuable tips and tricks to the common asks people have made.
     
  • Project Silverlight
    Wilfred Pinto has a lot of great examples dissecting various requests such as hit-testing on images, etc.
     
  • Filtering by Tag
    Here is an example I wrote showing how you can use the Metadata.xml file generated by Deep Zoom Composer to filter.
     
  • Deep Zoom Tag Cloud
    Craig Dunn extends my filtering example by generating a tag cloud based on the items – really cool!
     
  • Deep Zoom : Selecting an Image
    Matthew Serbinski shows you how to bring a Deep Zoom image into focus when a thumbnail of that image has been selected.

If you have something really cool about Deep Zoom that you’ve written that I did not mention here, please send me an e-mail kirupac[at]microsoft.com, and I will look into adding it.

Cheers!
Kirupa :)

Currently, Expression Blend does not have a scissor tool which allows you to cut shapes like you can in Expression Design. Instead, what you do have are geometric operations that allow you to not only achieve a similar result as “cutting a shape” but also do much more.

Christian Schormann wrote a nice post outlining how to use many of these geometric operations to slice and dice your vector content, so check it out from the following link: http://electricbeach.org/?p=135

Cheers!
Kirupa

In Blend you use the Pen tool to draw lines and they appear in the XAML as <Path> elements. But after you’ve drawn your lines and you test your application, the Paths appear immediately: they don’t replay the gestures you used to create them. But sometimes that’s the effect you want, so how do you do that?
The manual way is only practical if you have very few points. First draw out a Path consisting of straight segments. Then create a new Storyboard, move the playhead forward a tenth of a second and, using the Direct Selection tool, move the last point to the same position as the second-to-last point. Move the playhead again and repeat, each time moving an increasing number of points back to the previous position. When all your points are at the same position as the very first point, move the playhead to time 0 and click the Record Keyframe button. Now reverse the Storyboard and you’re done.

Any more than a very small number of points and you’ll need an automatic way of generating the Storyboard. You can do that with the code in the assembly dll built from the PathScribbler project I’ve provided below:


folderfiles Download PathScribbler Project Files

PathScribbler works with WPF paths but you could easily port the code to work with Silverlight. After building the dll and referencing it in your project, the way you use it is you first draw your Path (which may contain curved segments but they will be straightened by the PathScribbler code) and then you create a new, empty Storyboard. Finally just call PathScribbler.Generate() and pass the name of the Storyboard into which the animations are to be generated along with some other optional parameters. Then you can trigger your Storyboard any way you wish.

The PathScribbler project is contained in an example project named PencilWriter attached to the post. For this project I made a TextBlock into a Path and I trigger my Storyboard when the main window is clicked. Build and run the project then click the window and wait a moment until the animation is generated and then begins. Hope you have fun with PathScribbler!

-Steve

A few months ago, we asked you for feedback on what are some of the things you would like to see improved in Expression Blend. You all had a lot of great suggestions...A LOT. If you are interested in helping us both implement some of the feedback but also help define cool features,  we are looking for Program Managers to join our team!

The specific job details can be found on the following links for our two current PM spots: Position 1, Position 2.

Cheers!
Kirupa

EDIT:
Updated post to reflect an additional PM opening we have.

To address many of the issues you all had with the PhotoZoom functionality, we have released an updated preview version of Deep Zoom Composer. You can download the updated version from the following link:


dzcicon Download Deep Zoom Composer

Be sure to uninstall your current version of Deep Zoom Composer before attempting to install the latest version. The issues we fixed revolve around making the log-in screen more clear and ensuring uploads do not time out.

More specifically, you need to create an account on PhotoZoom prior to being able to upload via Deep Zoom Composer. The PhotoZoom Export tab now makes that step explicitly clear:

createPZaccount 

The second set of changes revolved around the log-in and upload difficulties many of you pointed out. We significantly increased the timeout for uploads so that most large uploads on slow connections will still succeed:

uploadingFile 

Do you have the latest build?
Because we released the updated version so quickly after we released the last one, do check to make sure you are running the latest version. You will know if you have the latest build by going to Help | About and seeing the build date, 3 August 2008:

dzc_about

Overall, this update is designed to make using PhotoZoom via Deep Zoom Composer usable. We think this is a great feature that makes Deep Zoom Composer more approachable by non-technical users, so please let us know if you continue having any difficulties, and we will be glad to take a look at.

Cheers!
Janete, Kirupa

A few hours ago, we released another update to Deep Zoom Composer. Click on the link below to download it:


dzcicon Download Deep Zoom Composer

Some of the major new features outside of the usual bug, performance, and stability changes include Panoramic Stitching and PhotoZoom Upload.

NOTE:
Our PhotoZoom Upload functionality inside Deep Zoom Composer is causing some uploads to not fully finish before timing out, and we hope to have a fix for this really soon.

PhotoZoom Upload *
To help make uploading and sharing your creations with others easy, Deep Zoom Composer nicely integrates with the Live Labs PhotoZoom service: http://photozoom.mslivelabs.com. When you choose to Export, the default selection will be PhotoZoom:

clip_image002

You can use your Live ID to sign-in. Once you have signed in, you can specify an album name, choose a cover image, and just upload:

clip_image004

Once you have uploaded your contents, you will see a dialog that allows you to browse your newly created album in your browser. For example, the following link shows you a sample project I uploaded directly to PhotoZoom: http://photozoom.mslivelabs.com/Album.aspx?alias=kirupa&album=15

Panoramic Stitching
Deep Zoom Composer now allows you to stitch similar images inside the application using some cool technology from Microsoft Research's Interactive Visual Group. Take a series of photos that share similar characteristics, right click on them, and select “Create panoramic photo”:

clip_image006

After a short while (the time depends on the number of images, how large the images are, and how much calculation is needed), you will see a dialog allowing you to specify the part of the image that you would like to save. After you have specified region of image to save, your stitched image will appear on your design surface just like any other image you can interact with:

clip_image008


We hope you like our latest release. This is still a beta/preview release, so if you run into any problems, please feel free to post on our forums.

Cheers!
The DZC Team (Celso Gomes, Christian Schormann, Janete Perez, and Kirupa Chinnathambi)

* Edit:
If you are receiving a 401 error when attempting to upload to PhotoZoom, please try again in a short while. There may be some temporary glitches as we deal with some issues related to this.

This post will try to showcase an updated list of useful (and free!) training material available for Expression Blend:

Training Resources from Microsoft

Expression Blend and Design Blog: Tips & Tricks

Expression Community

Expression Blend (Online) User Guide

Expression Blend Tutorials


MIX 07/08 Video Sessions

Building Rich Client Experiences with Blend and WPF (by Celso Gomes and Christian Schormann)

Building Rich Web Experiences (by Celso Gomes)

Applications = Designers + Developers (by Celso Gomes and Kirupa Chinnathambi)

Designing Next Generation User Experiences (Johnathan Lansing)


Tutorials (Videos)

A Lap Around Microsoft Expression Blend (Steve White)

4 Visual State Manager Videos (Steve White)

Animation and Media (Peter Blois)

Blend for Programmers (Jesse Liberty)

contentpresenter.com - WPF Video Tutorials (Lee Brimelow)

Lynda.com - Video Tutorials 1, Video Tutorials 2 (Lee Brimelow)


Tutorials (Articles)

Nibbles Tutorials (Celso Gomes)

Collection of Visual State Manager (VSM) Resources (Steve White)

Electric Beach (Christian Schormann)

kirupa.com - Blend + WPF, Blend + Silverlight (Kirupa Chinnathambi)

 

If there is some useful resource you would like to see added to the list, please drop me an e-mail at kirupac[at]microsoft.com to let me know!

Cheers!
Kirupa :)

One of the things that we are planning on doing is providing easier access to learning content. Besides the influx of learning content (videos, articles, etc.) we will be generating ourselves, we also want to link to content around the web that many of you like as well.

Please comment below on sites, blogs, etc. that you have found very useful for learning more about Expression Blend. In the future, I will create a follow-up post that will hopefully act as a central location we can point individuals to if they want to learn how to use Expression Blend.

Thanks,
Kirupa

You’re probably very familiar with Content in WPF and Silverlight. For example, two Buttons can use the same Template but can look different by virtue of having different Content in them. And the Content property is of type object so it can be Text, or an Image, or a Panel containing yet more elements, or anything else. In the Template, the uncertainty of what the Content might be is taken care of by the ContentPresenter element which is analogous to a TV screen showing whatever Content happens to be in the control instance.
This generality of Content is a good thing. But it does give rise to an issue in scenarios where you would like your Template (or Skin, if you prefer) to alter some aspect of the Content in a visual state. Say you’d like the Content’s Stroke color to animate to red during MouseOver. Naturally, that requirement only makes sense as long as the Content has a Stroke property.

A safe, but limited, solution is to make use of the small number of properties that ContentPresenter has. For example, in WPF, the Template might respond to an IsMouseOver Trigger by animating the ContentPresenter’s OpacityMask to Red. Then the Templated control instance could bind some property of its Content to that OpacityMask like this:

<Button Style="{DynamicResource ButtonStyle1}">
    <Path Stroke="{Binding Path=OpacityMask,
                   RelativeSource={RelativeSource
                                   AncestorType={x:Type ContentPresenter},
                                   Mode=FindAncestor}}"
                   Data="… "/>

</Button>

That approach is limited because you soon run out of ContentPresenter properties. Another approach is for the Template to make assumptions about what will be in the the Templated control instance’s Content. You can try this in a Silverlight 2 project in the Blend 2.5 June Preview. Draw a Button and then draw a Path into the Button’s Content. Then edit a copy of the Button’s Template, select the MouseOver state, select the ContentPresenter and change its Background to Red. Now you’ll need to do some XAML editing. In the XAML, find the MouseOver state and the Background animation and change the Storyboard.TargetProperty attribute’s value to "(ContentPresenter.Content).(Shape.Stroke).(SolidColorBrush.Color)".

Build and run and you’ll see the result. This is flexible, but it is also unsafe in the sense that if a control instance uses your Template without satisfying the Template’s assumptions (say its Content is a TextBlock instead of a Shape) then a run-time error will result. However, so long as you’re careful to only use this Template on control instances whose Content is a Shape then you’ll be fine.

Corrina Barber came up with a scenario which is not addressed by the above approaches. The scenario is that of a Button which, in its Normal state, shows a still image (say, vector art of the MSN butterfly) and, in its MouseOver state, shows an animation (say, an image sequence or video of the butterly exercising its wings). Naturally, each Button instance should be able to specify the Normal and the MouseOver Content. This can’t be done by simply animating existing types’ properties in states so in this post I’ll show some of the principles of my solution to that requirement.

I wrote a fairly simple subclass of ContentControl and I called it FlipContent:

[System.Windows.Markup.ContentProperty("UnflippedContent")]
public class FlipContent : ContentControl
{
    public static readonly DependencyProperty IsFlippedProperty =
        DependencyProperty.Register(
        "IsFlipped",
        typeof(double),
        typeof(FlipContent),
        new PropertyMetadata(new PropertyChangedCallback(IsFlippedChanged)));

    public double IsFlipped
    {
        get { return (double)GetValue(IsFlippedProperty); }
        set { SetValue(IsFlippedProperty, value); }
    }

    public static void IsFlippedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        FlipContent o = d as FlipContent;
        if (o != null)
        {
            if (o.IsFlipped > 0)
            {
                o.Content = o.FlippedContent;
            }
            else
            {
                o.Content = o.UnflippedContent;
            }
        }
    }

    public object UnflippedContent
    {
        get { return _unflippedContent; }
        set { _unflippedContent = value; }
    }

    object _unflippedContent = null;

    public object FlippedContent
    {
        get { return _flippedContent; }
        set { _flippedContent = value; }
    } object _flippedContent = null;
}

The value proposition of the FlipContent type is that it can be made to flip its Content in reponse to a property change, therefore it can be made to flip its Content in reponse to a state change in a control template. Further, the Template needs to know nothing about the objects which constitute the FlipContent’s Content; the control instance contains those:

<Button>
    <local:FlipContent>
        <local:FlipContent.UnflippedContent>
            <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000"/>
        </local:FlipContent.UnflippedContent>
        <local:FlipContent.FlippedContent>
            <Rectangle Fill="#FFFFFFFF" Stroke="#FF000000"/>
        </local:FlipContent.FlippedContent>
    </local:FlipContent>
</Button>

You can try this in a Silverlight 2 project in the Blend 2.5 June Preview. Paste the class definition given above into Page.xaml.cs then add the Button XAML above. Then edit a copy of the Button’s Template, select the MouseOver state, select the ContentPresenter and change its Opacity to 50%. Now you’ll need to do some XAML editing. In the XAML, find the MouseOver state and the Opacity animation and change the Storyboard.TargetProperty attribute’s value to "(ContentPresenter.Content).(local:FlipContent.IsFlipped)". Now press F5 to test the result. You experiment with different content, and you will be able to use Blend to add and edit UnflippedContent because it is the default content property. But you won’t get as much help with FlippedContent.

You can download the project source files from below:


folderfiles Download Project Files

Please note that the solution to Corrina’s exact requirement (switching an image for some video) will probably call for a FlipMediaElementSource class which assumes its content is a MediaElement and which switches its Source property instead of its own Content property. I’ll leave that as an exercise for the reader – you maybe!

-Steve

Karen Corby is the Program Manager who worked with the Expression Blend team in developing the Visual State Manager feature. Karen has written four excellent and comprehensive blog posts (starting here) which explain the motivation for VSM, everything you can do with VSM and how it works under the covers, and how to build and skin a custom control. Even if you won't be writing your own custom control, this is highly recommended material on the subject from someone who designs the platform itself.

Below I've shamelessly copied out Karen's further reading section so we have a good set of links in one place:

 -Steve White

If you’ve browsed through the Deep Zoom Composer forums lately, you will have seen a few cases where Deep Zoom Composer was having difficulties maintaining layout when exporting collections. More specifically, the arrangement and position of images seen inside Deep Zoom Composer was not what you saw when you previewed your collection in your browser.

If this describes the handful of you who were having difficulties, we have a manual solution for you until we release our next version of Deep Zoom Composer. The solution is for you to open your dzc_output.xml file in Notepad and do a find/replace on all instances of commas ‘,’ with periods ‘.’ instead:

image

Save your dzc_output.xml file, and you should be set!

The problem is that in certain locales, commas are used to indicate precision as opposed to decimal units. Replacing the commas with periods will take care of this issue for you. In the next release of Deep Zoom Composer, we will take care of this automatically so you don’t have to worry about it.

Credit for finding the cause of the problem and the possible solution goes to Avi Dunn and Rado Nickolov of the Live Labs team.

Cheers!
Kirupa :)

A great site that covers designer-oriented Expression Blend topics is Celso Gomes’s Nibbles Tutorials site:

celsog

This all-Silverlight site features some nice articles on how you can use Blend to create WPF, Silverlight 1, and Silverlight 2 applications. He recently updated it cover the new features in Blend 2.5 such as the Visual State Manager, so if you’ve been itching to learn more about it, head on over to his site.

Cheers!
Kirupa

More Posts Next page »
 
Page view tracker