views:

711

answers:

6

I'm using WINFORMS not WPF.

I just know basic c# .net gui programming. I donot want the traditional windows look. I want to have my own custom look (eg. gtalk, antivirus softwares, media players, google chrome).

Actually I'm inspired by google's PICASA software. Its awesome. I want to do something like that.How can I do that? If there is something I should learn please point me.

Also I may have to write my own custom controls (like modified tree view etc..) I guess. Please give some good learning resources.

+2  A: 

You want to look for +winforms +skinning. I haven't tried these, but the first hits don't look bad. Most decent skinning tools will be paid for.

Marc Gravell
I donot want to use a software for this. I want to write and learn on my own.
mlguy
+2  A: 

There are some commercial control libraries available. I can recommend the Krypton Suite. It consists of the free Krypton Toolkit (which contains a lot of skinnable controls) and other non-free controls (Navigator, Ribbon, Docking, Workspace). It has some built-in palettes and renderers that allow you to make your UI look like Office 2010, Office 2007, Office 2003, ...

Tommy Carlier
+4  A: 

You can try any of the following:

telerik alt text

Syncfusion alt text

Or other components.

They do make your UI pretty.

Edit: if you want to study how they do it, you can buy the source code-- along with documentation and understand from there.

Ngu Soon Hui
great but I don't want to use any tools for this. I want to learn writing these on my own.
mlguy
What about you *buy* their source code-- along with documentation and understand from there? That would be the fastest way IMO.
Ngu Soon Hui
+16  A: 

This article describes how to draw custom windows. The author also shows how to draw non-rectangular windows.

If you could use WPF instead of Windows Forms, this is a good article about customizing window drawing:
http://www.codeguru.com/csharp/.net/net_wpf/article.php/c16379/

There is also a question with some good answers here on SO: http://stackoverflow.com/questions/1469727/creating-custom-forms-in-wpf

Update:
I think that skinning and custom drawing is fun to do from a programmers perspective, but I also think that there is almost no benefit for the user.
The creators of the platform you are developing for might have put a lot of effort into the design of their windowing toolkits.
If you just want to change some visual aspects of your application you also should take into account that you might miss some important other aspects of UI design:

  • consistency
  • accessibility
  • aesthetics (if you are overdoing effects, gradients, ...)
  • internationalization
  • ...

As you are developing for Windows, you also lose the skinning ability of the OS itself. And I think that some of the skins that come with newer versions of Windows are pretty good.

weichsel
The first part of this answer is good, but the second part (thinking about the benefit to the user) is better ;-p
Marc Gravell
+1 for pointing out that its good to stick to the platform's native UI.
Senthil
+1 another upvote for mentioning the custom UI might be fun but hardly ever really useful to the endusers.....
marc_s
But, Expression Studio apps (Blend, Design, Encoder, Web, etc.), Visual Studio 2010, they have their custom UI, but still don't look way off from the native UI look and feel. The thing is, consistency is there among those apps and you will feel they are part of a suite. Just some thoughts.
Senthil
Those are all Microsoft apps, so they define the platform look and feel. Their UI elements may become the next-gen "standard" elements. I experienced the same thing on OS X. (iTunes seems to be a UI sandbox for Apple)
weichsel
@weischel +1 for a great reply, particularly the second part expressing a too-seldom-recognized truth : programmers are often "out to lunch" on user-interface design in the sense that they are pursuing what they enjoy, and find elegant, rather than what is useful to end users. It is something of a paradox to me that, given the greater UI design freedom provided by WPF, imho, we see right now a convergence on two styles of abysmal looking ui's : one I call "funeral black;" the other I call "washed out aqua." If 'Blend is the future of ui design, I shudder :)
BillW
+1  A: 

From what you said, you want to develop your own custom controls. You have some frameworks for this like Qt which can use Direct3D for hardware accelerated graphics. It also have a Visual Studio plugin. There is a free LGPL version and a commercial version of it.

I remembered about Qt because you mentioned Picasa and as far as I remember, I heard the Picasa UI has been written through Qt.

Ucodia
+1  A: 

You can try using "SetWindowRgn(..)" to set an arbitrary region for your window. This may range from giving a rounded rectangle shape to giving a weird looking shape to the form! Check this out: Link.

There is another option if you are working in Vista(aero enabled), ie you can check out DwmExtendFrameIntoClientArea(..) function here: link text

You can set the form's border style to 'none' and go on to create your custom form! You then might have to create custom buttons to carry out tasks like close, minimise, maximise etc. You might even need to write code for drag and drop events..

For the background, you might need to have a look at the gradient fills to give a great effect, otherwise you can use great looking pictures as Background..! But the latter option isnt good unless you have really good pic.

Srivatsan Iyer