Pokazywanie postów oznaczonych etykietą Deep Zoom Composer. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Deep Zoom Composer. Pokaż wszystkie posty

wtorek, 14 października 2008

Silverlight 2 released!!!

No i stało się, pojawił się długo oczekiwany Silverlight 2.0 w wersji RTW!!! Ma być dostępny do ściągnięcie już dziś pod adresem http://silverlight.net/GetStarted, (w chwili pisania tego postu jest dopiero kilka minut po północy ;P ).

Nowy Silverlight 2.0 RTW, w stosunku do wersji Beta 2 ma wprowadzić kilka nowych poprawek na błędy, kilka kontrolek + skiny i tyle, nie spodziewałbym się zbyt wielu zmian (więcej informacji znajdziecie w porównaniu wersji Beta 2 z wersją 2.0 RTW - link). Natomiast to co może szokować, to informację o tym, że wraz z wydaniem Silverlight 2.0, pojawi się plug-in do Eclipse-a, który obsłuży tworzenie aplikacji przy użyciu tego IDE - http:/www.eclipse4sl.org/ :)

Jak to zadziała, tak jak widać na screenach na oficjalnej stronie projektu (link), to przesiadam się na Eclipse-a, na stałe! :D

I jako ostatnie, warto dodać, że Microsoft zapowiedział wypuszczenie także zbioru darmowych templatek (Silverlight Control Pack) oraz specyfikacji dla Silverlight's Extensible Application Markup Language (XAML). Wszystko w ramach darmowej licencji Microsoft Permissive License i zgodnie z obietnicą o otwartych "źródłach" (Microsoft's Open Specification Promise). W ten oto sposób, użytkownicy darmowego Visual Web Developer 2008 Express Edition będą mogli także tworzyć aplikację w Silverlight-cie 2.0!!!

Resources

  • Blog Jesse Liberty-iego (link)
  • www.blogs.zdnet.com (link)


Lecę spać, może rano już będą źródła :)

Pozdro,

JAcek C.

czwartek, 26 czerwca 2008

Materiały z sesji „Nowości w Silverlight 2.0” na wg-net (www.wg.net.pl)

W dniu 26-06-2008 miałem zaszczyt poprowadzić wykład na temat Silverlight-a 2.0. Wykład trwał około godziny i (mam nadzieje) zawarł podstawowe informacje o używanych narzędziach do pracy z Silverlightem oraz krótkie demo bazujące na znanym przykładzie aplikacji "Hello World". Głównym celem sesji, było zapoznanie słuchaczy z tematyką Silverlight-a i pokazanie kilka "bajerów", które zachęcą ich do samodzielnego zapoznania się z tą technologią.



Czy się udało oraz czy poprowadzona sesja spodobała się Wam, okaże się w ankiecie ;) A teraz czas na materiały z wykładu.

Sesja składała się z kilku slajdów i dwóch dem:

Slajdy w postaci Deep Zoom Composera


Prezentacja (odpalać w IE, w pełnym ekranie od wersji SL 2.0 Beta 2 nie działa Mouse Whell ;) )

Demo 1

Pierwsze demo


Demo 2

Drugie demo

Filmik nagrany w trakcie spotkania


Download

Zapraszam do wypełnienia ankiety ze spotkania link. Wyniki jej, pozwolą określić, jakie błędy robię oraz czy chcecie abym w przyszłości "wystąpił" przed wami ponownie.



p.s. a Ci co wyszli z mojej prezentacji na mecz i tak w pierwszej połowie bramki nie zobaczyli (Hiszpania poczekała ) :P

p.s.2 kto robił zdjęcia? Jak fajne to proszę o podesłanie, załączę do wpisu no i chciałbym mieć sobie na pamiątkę :)

Pozdrawiam i dziękuje wszystkim przybyłym,
Jacek Ciereszko

niedziela, 16 marca 2008

Silverlight 2.0 application with MultiScaleImage control and Deep Zoom Composer.

In this article I would like to present simple application with MultiScaleImage control and generated images from Deep Zoom Composer application. I hope my English is enough to understand this text but just in case I will put a lot of pictures. I will show you how to create application with very deep zoom and put it inside Silverlight 2.0.

First we have to generate project with images, therefore we have to download Deep Zoom Composer application. This process has 3 steps:

  1. "Add Image…"

    Create new project ("File"->"New Project…") and import images ("Add Image…"). Choose for example 3 images, not too much. Please, check if they are not too big (greater than 2MB).

  2. "Compose"

    Now we go to another step by clicking "Compose" button in the top of the screen.

    Then, drag and drop images. Take first one, resize and fit it to the screen.



    Zoom in image and place another one.

    And do the same to others pictures. Zoom it, and put image in that place.

  3. "Export"

    OK, so we created images, let's "Export" this to Visual Studio.

    All we have to do, is set path for our project ("Export Location"), add Name and choose if it will be exported to "deep image collection" (it generate more files and from my view it work slower).

    After this step we should have in our output something like this:


We need only folder with images and file "info.bin", in my example this is folder "deepzoomcomposerek".

OK, we have images from Deep Zoom Composer application. Let's put this to Silverlight 2.0 (If you haven't installed Silverlight Tools Beta 1 for Visual Studio 2008, you can download it here).

First, create new project in Visual Studio 2008.


I chose option "Generate an HTML test page..." because I don't need html files to add javascript to web page, I will create single silverlight project and use key down.

Now, build your project and copy folder with images (in my code this is "deepzoomcomposerek") from output (Deep Zoom Composer) to ClientBin folder (Visual Studio project). You should see something like this:

In Page.xaml file add code:

<UserControl x:Class="DeepZoomComposer.Page"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="1024" Height="768">

<Grid x:Name="LayoutRoot" Background="White">
<MultiScaleImage Canvas.Top="10" Canvas.Left="10"
x:Name="wg_net_ZoomObject" ViewportWidth="1.0" Height="768"
Width="1024" Source="/deepzoomcomposerek/info.bin" />
</Grid>
</UserControl>

Now you should be able to run your project and see your images.

Let's add mouse and key control. We have to add events to MultiScaleImage
in Page.xaml:

<UserControl x:Class="DeepZoomComposer.Page"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

KeyDown="UserControl_KeyDown" MouseLeave="UserControl_MouseLeave"
Width="1024" Height="768">
<Grid x:Name="LayoutRoot" Background="White">
<MultiScaleImage Canvas.Top="10" Canvas.Left="10" x:Name="wg_net_ZoomObject" ViewportWidth="1.0" Height="768" Width="1024" Source="/deepzoomcomposerek/info.bin" MouseLeftButtonDown="wg_net_ZoomObject_MouseLeftButtonDown" MouseLeftButtonUp="wg_net_ZoomObject_MouseLeftButtonUp"
MouseMove="wg_net_ZoomObject_MouseMove" />
</Grid>
</UserControl>

and implementation to Page.cs:

bool dragInProgress = false; //global variables
Point dragOffset;
Point currentPosition;
private void UserControl_KeyDown(object sender, KeyEventArgs e)
{
Point p = wg_net_ZoomObject.ElementToLogicalPoint(new Point((wg_net_ZoomObject.Width / 2),
((wg_net_ZoomObject.Width / wg_net_ZoomObject.AspectRatio) / 2)));
switch (e.Key)
{
case Key.Q:
wg_net_ZoomObject.ZoomAboutLogicalPoint(1.1, p.X, p.Y);
break;
case Key.E:
wg_net_ZoomObject.ZoomAboutLogicalPoint(0.9, p.X, p.Y);
break;
case Key.Left:
case Key.A:
wg_net_ZoomObject.ViewportOrigin =
new Point(wg_net_ZoomObject.ViewportOrigin.X - 0.1,
wg_net_ZoomObject.ViewportOrigin.Y);
break;
case Key.Right:
case Key.D:
wg_net_ZoomObject.ViewportOrigin =
new Point(wg_net_ZoomObject.ViewportOrigin.X + 0.1,
wg_net_ZoomObject.ViewportOrigin.Y);
break;
case Key.Up:
case Key.W:
wg_net_ZoomObject.ViewportOrigin = new Point(wg_net_ZoomObject.ViewportOrigin.X,
wg_net_ZoomObject.ViewportOrigin.Y - 0.1);
break;
case Key.Down:
case Key.S:
wg_net_ZoomObject.ViewportOrigin = new Point(wg_net_ZoomObject.ViewportOrigin.X,
wg_net_ZoomObject.ViewportOrigin.Y + 0.1);
break;
default:
break;
}
}

private void UserControl_MouseLeave(object sender, MouseEventArgs e)
{
dragInProgress = false;
}

private void wg_net_ZoomObject_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
dragInProgress = true;
dragOffset = e.GetPosition(this);
currentPosition = wg_net_ZoomObject.ViewportOrigin;
}

private void wg_net_ZoomObject_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
dragInProgress = false;
}

private void wg_net_ZoomObject_MouseMove(object sender, MouseEventArgs e)
{
if (dragInProgress)
{ Point newOrigin = new Point();
newOrigin.X = currentPosition.X -
(((e.GetPosition(wg_net_ZoomObject).X - dragOffset.X)
/ wg_net_ZoomObject.ActualWidth) * wg_net_ZoomObject.ViewportWidth);
newOrigin.Y = currentPosition.Y -
(((e.GetPosition(wg_net_ZoomObject).Y - dragOffset.Y)
/ wg_net_ZoomObject.ActualHeight) * wg_net_ZoomObject.ViewportWidth);
wg_net_ZoomObject.ViewportOrigin = newOrigin;
}
}

Now you can run application and "deep zoom" in your images. As you can see in code, you can zoom in/zoom out your images with Q and E or move them with W, S, A, D and arrows.

Very good resources:

Laurence Moroney's Blog - DeepZoom in C# - Not just possible, but easy
Mike Taulty's Blog - Silverlight 2 - First Attempt with MultiScaleImage
Yasser Makram - Silverlight 2.0 Deep Zoom using MultiScaleImage Control
Joe Stegman's WebBlog - Deep Zoom version of Silverlight 2 Developer Reference Poster

Source code:


Working demo:


http://www.wpierdalaj.pl/blog_resources/demoDeepZoomComposer.html


FIN

I hope you enjoy this article, it was my first in English language and I think the last one on this blog. There is a plenty good blogs in English and I don't want to just copy them. So if you have any question about articles wrote in polish, send me email and I will try to help you.


Jacek Ciereszko

kick it on DotNetKicks.com