Guidelines for application colors (background, buttons, etc.) on Windows? - windows

What are the recommended colors for an application's background, button faces, etc.?
In the past I've just chosen a color scheme but I'd like to be more compatible with the Windows Accessibility Options, etc.
I see that VB6 has System Colors like Application Workspace.
Edit: I'd like to find an explanation of all of those colors (like what's the difference between Application Workspace and Window Background?

In my opinion, you should leave the colors as they are if you are using standard controls; they'll get the right color according to che current color scheme by themselves. You need to use the color constants only if you have to draw your own UI elements; in that case, the meaning of those constants is explained briefly in their documentation.

This PDF http://www.johnsmiley.com/cis18/Smiley009.pdf [ explanation of VB6 System Color values ]should help you. It lists all the system color constants and what they mean. For instance vbApplicationWorkspace is the "Background color of multipledocument interface (MDI) applications."

If you're interested in the whole MS Windows UI/UX guidelines, they are available online here and for download here. Page 618 deals with how to "Use theme or system Colors"

It depends on the language and framework you use. .Net for example has an entire SystemColors class full of static properties like SystemColors.Control that are 'changed' to the corresponding system color in runtime.
I think most office applications conform to the system colors, while most graphics intensive applications (e.g. games) use their own color scheme.

It is best if you try to use the colors of the current system (like the .NET SystemColors), that way if the user changes his settings (for example if he uses a high-contrast color scheme or some fancy black theme he likes) your application will adapt those colors and that way conforms to the users preferences/needs.

Related

Distinction in Control Styles for Lab Windows CVI

I'm creating some UI controls in Lab Windows CVI programmatically, and I saw on NI's site that there are two different graph types, "CTRL_GRAPH_LS" and "CTRL_GRAPH". Many other controls have the same suffix. What are the differences between the two?
Thanks in advance.
_LS is used to indicate Lab Style controls.
Using one over the other is completely preferential. The primary distinction is that Lab Style is a new style, as opposed to Classic, or old style. Lab Style has a richer, 3D look, where the old style is flatter in appearance. In terms of functionality, I have seen no advantage using one over the other. When using the NewCtrl function to programmatically create your UI controls, you can select Lab Style controls by including the _LS suffix option for controls that offer it.

Set persistent custom colors in Windows color picker

Is there a way to have a custom color that has been set in the Windows color picker to be persistent? When I use Adobe LiveCycle and want to change a color to a color that I use all the time, I have to create it every time, and I figured since it's accessing the default Windows color picker, there might be a way to add the color and make it persistent.
IMHO, there is no way of doing so. Microsoft allows to redefine the default colors and it also allows for a hook to remember the user selected colors, but it has to happen in the source of the program. See http://msdn.microsoft.com/en-us/library/windows/desktop/ms646375%28v=vs.85%29.aspx#custom_template on how to set default colors when compiling a program.
Even the Microsoft default Paint program is dumb enough to forget any user defined colors.
Cheers,
p.s. For others, who are programming their own application and what to allow for saving user-defined colors: http://vbcity.com/forums/t/112635.aspx

Is there a standard (non-WPF) way to do unusual shape/style dialogs?

Many applications have dialogs which have totally custom-looking dialogs, big fat tool-bars and non-rectangular shapes.
Notepad++ looks fairly standard, but is able to make dialogs transparent (e.g the search/replace dialog).
While WPF allows such things (I think) apps have been doing this way before WPF/Aero/Vista existed. Do thye all rely on totally customising the painting/rendering functionality or do they do something else? I've not seen much in MFC or Winforms for this as standard.
For transparency:
Here's a CodeProject link for doing it with the Win32 API:
http://www.codeproject.com/KB/winsdk/quaker1.aspx
And to do it in .Net you just set the Form's Opacity property to something less than 100%, like 50 to have it be half way transparent.
For non-rectangular windows:
Here's some info that may help:
http://www.devx.com/dotnet/Article/21448
http://www.catch22.net/tuts/tips#NonRectangularWindows
To do transparency, use the form's opacity property, as Jacob Ewald points out.
To do shaped forms, check out this MSDN article.

How to programmatically create a 'bright' and a 'gray' version of an icon?

In a win32 application, I want to have a button with an icon which looks gray when the button is disabled and 'brighter' when the mouse hovers.
I know I can create three bitmaps with an icon editor, but since the icon can be user selected and loaded from the disk, I would like to create the other two versions programmatically.
So, starting with a handle to an image, I would like to:
- Create a new image with all colors converted to grey.
- Create a new image with all colors shifted to white or yellow.
Can this be done using win32 api calls?
Examples in any language will be appreciated.
Maybe the good old DrawState function will suffice. (For some reason it is now listed as only available from Win2000 which is not true.)
And maybe not, in which case you might want to use SetColorAdjustment function.
If the icon is user-selected do you control the format? If not you'll probably want to incorporate an image library or external process like DevIL or Imagemagick which handle more formats than Microsofts API's are likely to..

User Interfaces - Colors and Layout

Although I'm specifically interested in web application information, I would also be somewhat curious about desktop application development as well. This question is driven by my work on my personal website as well as my job, where I have developed a few features, but left it to others to integrate into the look and feel of the site.
Are there any guides or rules of thumb for things like color schemes, layouts, formatting, etc? I want to ensure readability and clarity for visitors, but not be bland and dull at the same time.
As for my knowledge in this area - If you hand me a picture, I have enough knowledge to reproduce it on the screen, but if you ask me to design a new interface or redesign an existing one, I wouldn't know where to begin.
Usually, each operating System has user Interface Guidelines. For Windows, have a look here. (Edit: The links in that post are broken. But a Search for "User Interface Guidelines" on MSDN has articles about everything)
Apple has it's own as well. Also, you may want to keep accessibility in mind.
One tip to check if your colors have good contrast is taking a snapshot of it and converting to grayscale. If you can't read something, colors were surely bad choosen.
Plus, although it's not about user interfaces, Before & After Magazine can give you some pretty good hints about color, design and related topics. It even has got some free pdf's to download.
The book Designing Interfaces, by Jenifer Tidwell has a entire chapter on the subject (Chapter 9, excerpts accesible online).
The entire book is worth recommending.
For web UI, I'm going to go out on a limb here and say that the most important color in web design is white, or "light". This is the color on top of which you place dense tracts of content.
Dark text, light background, always, when it comes to your primary content areas.
And the most important rule in layouting is whitespace. Let the content breathe.
Following these two simple rules is worth more than most "user interface usability" guidelines.
And by the way, the MS user interface guidelines are (by and large) horrible. Read Jakob Nielsen, look at Apple design aesthetics, but stay away from the MS "neutral gray/blue crunchbox" 12-step Wizard 10pt text philosophy of UI.
(And I say that as a long-time MS GUI programmer)
I'm horrible at finding colors that look good together, so I cheat and use pictures from nature that are mostly the color I want (say, green) and then I use this website to pull out the main color scheme. Generally nature does a pretty good job of setting its own nice color schemes.
Use high contrast color combos; Black text on white background is the best example of a high contrast combo.
A bad combo is green text on red background. It's horrible for color blind people (like myself).
See what your site looks like to a color blind person: colorfilter.wickline.org
As for desktop applications: Whatever you do, do not use hand-picked colors. Stick with the named system colors such as "Window Background", "Menu Text", etc. Otherwise, people relying on OS accessibility features will be locked with your color choices (unable to choose a high-contrast theme, for instance) and to people who like to customize their desktop themes will think your application is fugly.
Here are some simple pointers for usability in your typography. These things mainly address readability and accessibility concerns.
DOs:
Use relative font sizing (em)
Identify language changes within a document using the LANG attribute
Black text on a white background
For headings, use H1, H2, etc. and nest them appropriately
Chunk up content and organize with headings that fit what your users are looking for
Write clear and simple copy
Align left, ragged right
Text-to-background color must be high contrast
DONTs:
Use "click here" or "more" as link text
Use underline for emphasis
More than 2 font-type families
Italics
Blocks of text using all caps
Use true red or true blue text on white background (chromatic aberration)

Resources