Posts

  • I have started tweeting

    I have finally jumped on to Twitter and making sounds (tweets) on @pavanpodila. So follow me and I’ll follow you :-)
  • Animating graphs in WPF using Clipping masks

    Over the past couple of weeks I have been working on an application that displays a variety of graphs. One of the standard features we have is the load animation for a graph when the user sees it for the first time. For a line graph, this would mean that the graph animates from the left to right and draws itself out.

    Continue reading...

  • A fun After Effects CS4 composition

    Last night I was playing around with After Effects CS4 and made this video just for fun. Its nothing fancy, just some 3D shake and some particle effects. Unfortunately I did not save my project so I cannot post the *.aep file. I do have the rendered video, which you can see below. In the future, I will post the project file as well.
  • Making dashed lines in Photoshop

    This is just a quick post on how to make dashed lines in Photoshop. I am sure many of the designers who are reading this would find it useful. Photoshop by default does not give you any direct way to draw dashed lines. However it has the very powerful brush engine that can do the trick.

    Continue reading...

  • A tip for referencing Assets in your WPF application

    Organizing and referencing assets (images, fonts, xaml) has always been an interesting topic of discussion. There is still no proper guidance and is wide open for experimentation.

    Continue reading...

  • Huge limitation of a MarkupExtension

    MarkupExtensions are a Xaml-only way of providing extensions to the markup. It allows you to encapsulate procedural logic and provide value to attributes (DependencyProperties) inside of a Xaml document. To create a custom MarkupExtension you derive from the MarkupExtension class and override the ProvideValue() method. This method is called automatically by the framework when it needs the value for the DependencyProperty. Note that it is a one-time only call.

    Continue reading...

  • The PyBinding MarkupExtension: use Python statements for Data Binding

    Many of us have felt the need to have custom expressions inside of Bindings. The need has ranged from applying mathematical operators to calling methods on bound objects. For simple needs you can probably create a custom IValueConverter or a IMultiValueConverter that can do the job, but when you want to use arbitrary expressions, something more elaborate is needed.

    Continue reading...

  • IronPython is the new IValueConverter, IMultiValueConverter

    Applying simple mathematical operations inside WPF DataBindings has always been a non-trivial task. By default the {Binding} or MultiBinding syntax does not allow the use of arbitrary expressions inside the Path. They are restricted to the dot-syntax of referencing properties on an object, possibly with a chain of references, something like Person.Phones[0].Phone.Number. Simple expressions like Person.Age + 1 are disallowed.

    Continue reading...

  • The new TransitionPresenter in FluidKit

    Over the past couple of days I had a chance to update the TranstionContainer control in FluidKit. There are a bunch of refactorings and some new features:

    image

    Continue reading...

  • A technique to find an ItemsPanel with simulated hit-testing

    I am sure many of you have had a need to dig into an ItemsControl to find the ItemsPanel.

    If you are taking a top-down approach, which is more involved, you would have to rely on the VisualTreeHelper to drill down and then find the Panel instance you need. A bottom-up approach is more easier if you have a reference to a UI Container inside the ItemsControl. You could do ItemsControl.GetItemsOwner() and pass in a reference to your UI container to get back a reference to the ItemsControl. A slightly different way would be to walk up the parent chain manually and get at the ItemsControl.

    Continue reading...

  • Multi selection in a CoverFlow view

    CoverFlow by default is an single selection model. The item that is in the center is always the selected item and as you keep navigating from left to right, the selected item changes. To introduce a multi-selection mode into a seemingly single selection model, will require some fundamental changes.

    Continue reading...

  • Generic.xaml must have a build action of Page

    I was in a code review session and was getting a constant problem with the default (generic) theme for a control. The file generic.xaml was correctly located in the /Themes folder and the Assembly attribute ThemeInfo was also set. But still the control was notshowing up !

    Continue reading...

  • No WebBrowser on a transparent Window

    One of my blog readers, Haider Malik, raised a question about not being able to see a WebBrowser control inside a transparent GlassWindow. My original thoughts were about some Airspace issues or something to do with Interop. Interestingly it looks like embedding a WebBrowser or any ActiveX object inside a transparent Window is just not supported in the current version of WPF. Thanks Haider for letting me know!
  • A Carousel component in jQuery

    Sometime back I had done a landing web page for some of the internal projects at my company. The page was supposed to be pure Html with Css and Javascript. jQuery was an obvious choice for me as I had already used it successfully in my earlier projects. We decided to show the projects in a carousel view, something like so: image

    Continue reading...

  • I am now an MVP!

    I got the news today morning that I have been awarded the Microsoft Most Valuable Professional for Client Application Development. Thank you Microsoft!
  • Demo video of Flash CS4 features

    Lee Brimelow does a nice job describing some of the exciting new features of the Flash CS4 IDE. He has published a video on his popular GotoAndLearn website.

    Continue reading...

  • FluidKit with Outlook 2007 and Dynamics CRM

    It’s always good to hear about people using FluidKit in their projects.

    Today morning I got a mail from David Rousset about a project he had done, that used FluidKit’s TransitionContainer. He has published an article on the MSDN-France website describing the project in more details.

    Continue reading...

  • Quick tip to get a striped background

    If you are looking to apply a striped background to any of your elements, you don’t need to rely on a PNG tile. Instead you can do it all in Xaml, using a LinearGradientBrush.

    Continue reading...

  • Visual Enhancements to the Virtualized CoverFlow

    image

    Over the past couple of days (or is it weeks ;)), I have played with tons of tweaks and customizations for the virtualized CoverFlow. I think I finally have a winner from my project’s perspective. Although I can’t share that version, I’ll show you one that is a few days old. It is quite close to the final result, except for the visual polish.

    Continue reading...

  • Lawson Smart Client using ElementFlow ?

    That’s what one of my friends suggested. Well, the source is out there on CodePlex. With some tweaks to the Camera angle, Models and animations, it is quite possible to make ElementFlow look like the following: Have a look at the Video, around the 4:00 mark.
  • Virtualized CoverFlow with dynamic Add/Remove

    The previous post showed how the CoverFlow view was virtualized and had a video that demonstrated scrolling of 10,000 items. A few more enhancements have been added to improve the overall experience. Some of these include: Lot of customizations for animations, camera settings, behavior for newly added items Improvements for speed scrolling Improved 3D performance with VisualBrush caching, animation speed and memory utilization The video shows you all of these in action with items added and removed randomly.

    Continue reading...

  • CoverFlow with UI Virtualization

    The CoverFlow view of iTunes was a big inspiration for me when I started out experimenting with the ElementFlow control. Initially it was used to visualize only a small collection of items (in tens) and this worked perfectly fine. Recently at my company we decided to adopt the CoverFlow view to visualize a much larger collection (in hundreds and thousands). This caused serious problems in terms of memory and performance. Clearly ElementFlow could not keep up with such a large collection. After much debate the decision was to virtualize CoverFlow. In other words, implement UI Virtualization for the CoverFlow view.

    Continue reading...

  • Techniques for UI Auditing on WPF apps

    User Interface auditing is a fundamental requirement when you want to do usability testing and analysis. The auditing process captures user data about how the mouse and keyboard are used. We will stick to Mouse and Keyboard since they are the predominant input devices. Of course you can also involve the Stylus and touch-based gestures, if your apps use it.

    Continue reading...

  • Details of my upcoming Book

    I finally received the mail from SAMS with the ISBN for my book. So I guess things are getting official !, which also means I can give out a few more details about the book. Let’s start with the title.

    Continue reading...

  • Red-Green-Blue shift shader

    This is just a weird shader effect I came up with while I was testing something else. The idea is to distort the image by using the component values (R, G, B). The distortion is achieved by shifting the texture co-ordinate with the values stored in the R, G or B component. Once we have the shifted TEXCOORD, we use that to sample the color value. This becomes the output value for that co-ordinate. You can get some weird, psychedelic effects with a combination of parameters.

    Continue reading...