The program above is, as said, a Sudoku game. I have written down ideas on how to write an algorithm for generating random boards in this Sudoku game which could actually work, but it turns out the algorithm isn't my biggest problem, the board is. I have asked several questions which told me the conclusion of re-making the board.
My question here is - What could be used as board? Originally, I had 81 buttons. Yes you read that correctly, 81 buttons. The design was good at first - you would click the button and the text on it would be incremented by one. Very friendly interface, but a pain to code. One of the solutions that came to my attention was that I could use a PaintEvent, however, I found no documentation of that alternative except with GIT, and most I found were in c sharp. I'm using C++/CLI, in Visual Studio 2010 and on Windows OS.
For further details, my board should be 9x9, this image bellow represents what my final product should look like:
What alternatives to my version could be used? If you haven't read my full post, my original design was a board made of 81 buttons (9 horizontal, 9 vertically)
Perhaps, you might create a sidebar with 0..9 numbers and the interface might be based on drag'n'drop.
The user picks a number and drags it to the selected board cell.
This is suitable for both desktop mouse-based apps and for touch-based mobile applications.
In this approach you don't need 81 buttons - just a single Panel, which accepts the 'DragDrop' event.
See http://msdn.microsoft.com/en-us/library/ms973845.aspx for details.
Good Luck !
Related
Sorry for an untraditional question that has more to do with terminology than with coding, but I believe that here at StackOverflow are lots of people whose native language is english, and they could make the right suggestions. So the deal is that I'm writing FrontEnd UI for self-service kiosk. First thing that an user must do to use kiosk is scan his RFID contactless card by bringing it to a reader.
Problem is simple but confusing at the same time - what's the best and most understandable expression to describe an action of quickly weaving card in front of reader that's located on a vertical kiosk surface right under screen and marked with LED circle?
My guesses and comments I've came up till now:
Place your card on the circle
I guess that you can't use the expression "place on" if we talk about vertical surface and the fact that scanning only takes a tenth of a second, right? Some older folks can misunderstand and keep their cards pressed for minutes at time while making selections on screen.
Scan your card
Again - older folks maybe will not understand what "scan" means. In best case scenarios they may have used swipe-cards in past.
Scan your card by pressing against the circle
Very long phrasing for such a simple action?
Weave your card in front of circle
Sounds a bit stupid, I guess..
Bring your card to circle
This seems most understandable so far
Please, maybe some native speaker could give me his opinion on the subject, so I can at least have my consciousness clean that I've at least tried my best to come up with best solution. :)
This is by no means definitive, but what about Place card near circle - this is based on common verbiage that came to mind from Exxon's Speedpass. And since you will have a confirmation indicator (i.e. check mark animation) in addition to the text it seems enough to communicate the action required.
I agree you should make it as intuitive as possible, but it is difficult to fully educate a person who has never used an RFID card through a kiosk with universal text.
I am a total beginner with Xcode and Objective C, but I have some experience with OOP in C++. I bought this book. I read about how to make a simple app, and skimmed the rest of the book. What I want to do is make an iPhone app people can use to look up math equations such as the quadratic eqauation, pythagorean identity, etc. I plan to include a lot of stuff, and do a lot of things better than other apps I have seen. However, before I pay Apple $99 to be a full fledged iOS developer, I want to know that it isn't too hard to make the Greek letters and Math notation that we see in math books. So for example, what code is needed to make an iPhone app that display . Of course I want to use features that I understand are included in Xcode for doing this sort of thing, rather than, make a graphic with another program that my app would use when needed. Besides that specific example, where is the Apple documentation for making other math symbols and notation that my iPhone app will display? If this is the wrong place to ask, it would be great if you could tell me of a beter place to post my question.
It's going to require a lot of writing to get good layouts using the system frameworks. All the building blocks are there, but your program would need significant rendering customization to get the layouts you expect. In detail, the characters you need are there, but you will need to write a bunch of supporting code in order to resize, position, and layout these characters correctly.
You may want to look for a suitably licensed library you can use which specializes in this purpose. Perhaps a LaTeX renderer would offer some good leads.
Use core animiation layers to construct the elements of a parsed equation. Use Quartz to draw lines, symbols, for rendering visual elments of the operation with the equation. Also use Core Plot. And then eventually output to Latex once parsed into hierarchical data structure. Also check out Graham Cox's GCMathParser.
Similar question: Drawing formulas with Quartz 2d
At this point, everyone knows that there's a limit to the number of ShellIconOverlayIdentifiers (from MSDN):
The number of different icon overlay handlers that the system can support is limited by the amount of space available for icon overlays in the system image list. There are currently fifteen slots allotted for icon overlays, some of which are reserved by the system. For this reason, icon overlay handlers should be implemented only if there are no satisfactory alternatives
I can understand the 15 overlay limt in Windows 95. But in an environment where there's Gigs of RAM, numerous Cores, and GPUs, is there some technical reason for such a low number in a modern operating system?
And why isn't this value configurable?
Before giving the 'performance' answer, consider:
Windows allows for configuration such that you can kill performance... why pick on this issue specifically?
Unless someone here happens to work on the Windows Shell team, I doubt that you're going to get an answer that really addresses the technical limitations and how they affect the design choice. But I'll try...
My guess is that there isn't any technical limitation, or at least there isn't one now. The real reason is presumably that no one has ever taken the time to sit down and update the code, the design, and the spec to lift this limitation. Features aren't implemented by default, and just because the computing environment has changed in the last few years doesn't mean that someone sat down and rewrote Windows to take full advantage of all those changes.
You should also consider that is more than likely a conscious design choice, rather than an imposed limitation. Raymond Chen (who actually does work on the shell team) published a blog entry responding to the uproar about Windows 7 removing the "sharing hand" overlay. He makes a compelling argument that the icon overlay is really not a desirable way of showing information (above and beyond the fact that the system is limited to 15) [emphasis added]:
Generally speaking, overlays are not a
good way of presenting information
because there can be only one overlay
per icon, and there is a limit of 15
overlays per ImageList. If there are
two or more overlays which apply to an
item, then one will win and the others
will lose, at which point the value of
the overlay as a way of determining
what properties apply to an item
diminishes since the only way to be
sure that a property is missing is
when you see no overlay at all. (If
you see some other overlay, you can't
tell whether it's because your
property is missing or because that
other overlay is showing instead of
yours.)
It seems reasonable to me that the extra clutter added to the shell is simply not worth it in the majority of real-world cases. The Windows Shell team obviously reached the same conclusion and cut the "sharing hand" overlay. Raymond's direct explanation:
Given the changes in how people use
computers, sharing information is
becoming more and more of the default
state. When you set up a HomeGroup,
pretty much everything is going to be
shared. To remove the visual clutter,
the information was moved to the
Details pane.
And, I know you specifically asked not to mention performance, but Windows really does try to keep you from shooting yourself in the foot. Users demand responsiveness in the shell, and overlay icons can interfere with this. As further evidence that they are not the priority, another blog post by the same Raymond Chen chastises:
Another example of applications having
a selfish view of performance came
from a company developing an icon
overlay handler. The shell treats
overlay computation as a low-priority
item, since it is more important to
get icons on the screen so the user
can start doing whatever it is they
wanted to be doing. The decorations
can come later. This company wanted to
know if there was a way they could
improve their performance and get
their overlay onto the screen even
before the icon shows up,
demonstrating a phenomenally selfish
interpretation of "performance".
Excellent response on the practical issues by Cody. As to why 15 and not some other number, the limit is baked into the ImageList control itself.
This is all very well and good, as explained by Cody Gray, but frankly it is pretty unimaginative, and as reported behind the scenes, sounding a bit frustrated.
In 2015 and with Windows 10, surely there can and needs to be a better ability, as I noted about thirty overlays present and had to prioritize ones I wanted most to see, which is not what you want most people to worry about at all. Also I see aggressive vendors like Box over-competing to try to prioritize themselves, and that will never go any place good.
Here's a possibility: What if multiply overlaid icons had a generic overlay indicator; a small rectangle matrix of multiple colors like the Google Chrome Apps button? Singly overlaid would just show the overlay out of a long list.
Then when the mouse pointer meets the icon, a small flyout window collects all the icon variations to view (at small icon size or a little larger). Each overlaid icon in turn announces by tooltip what it is, when you mouse over.
Now you can have all the icon overlays you need, for state in various clouds, for repository indications as for Tortoise tools, and so forth.
I quote an extract of the definitive answer here from Why is there a limit of 15 shell icon overlays? Raymond Chen 2019 post
The value 15 came from the corresponding limit for image lists. The
ImageList_SetOverlayImage function supports up to 15 image list
overlays per image list. (Hey, it used to be worse. The limit used to
be only 3!)
Okay, but why only 15? Why not more?
The overlay image is one of the pieces of information used when
drawing an image from an image list. The options are encoded in the
fStyle parameter, and when the bits were divided up for various
purposes, four bits were available to be used to specify the overlay
image. (You get 15 overlay images instead of 16 because you lose one
of the values in order to specify “no overlay.”)
Okay, but the values in the fStyle parameter use only the bottom 16
bits. What about the upper 16 bits? There’s plenty of room there.
The 16-bit limit was carried over from the 16-bit version of the
common controls (which still needed to be supported in Windows 95). Of
course, nowadays, nobody cares about the 16-bit version of the common
controls, so why not start using the upper bits?
There’s an unsatisfying explanation: The code internally that manages
the fStyle still uses a WORD in some places, so all the code that
manages the fStyle would have to be revised. This occurs in multiple
modules across Windows, so a synchronized change would have to be made
across multiple components. This is a breaking change at the binary
level because the interfaces are no longer compatible. Breaking
changes are procedurally difficult to coordinate: The affected code
may not be visible to the shell team because they are sitting in a
far-away leaf branch that has not yet RI’d to the trunk. It might be
that expanding fStyle from a WORD to a DWORD has far-reaching
consequences for some component.
Like I said, this is unsatisfying. Basically it boils down to “It
would be a lot of work and we are lazy.”
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
When designing a user interface for an application that is going to be used internationally it is possible to accidentally design an aspect of the UI that is offensive to or inappropriate in another culture.
Have you ever encountered such an issue and if so, how did you resolve the design problem?
Some examples:
A GPS skyplot in a surveying application to be used in Northern Ireland. Satellites had to be in a different colour to indicate whether they were in ascent or descent in the sky. Lots of satellites in ascent are considered good as it indicates that GPS coverage will be getting better in the next few hours.I chose green for ascent and orange for descent. I had not realised that these colours are associated with Irish Catholics and Irish Protestants. It was suggested that we change the colours. In the end blue and a deep pink were chosen.
For applications that are going to be translated into German, I've found that you should add about 50% extra space for the German text compared to the English text.
A friend was working on a battlefield planning application for a customer in the Middle East. It was mandated that all crosshairs should take the form of a diagonal cross, to avoid any religious significance.
(Edit - added this) In the UK a tick mark (something like √) means yes whereas a cross (x) means no. In Windows 3.1 selected checkboxes used a cross, which confused me the first time I saw it. Since Windows 95 they've used (what I would call) a tick mark. As far as I can tell both a tick and a cross are called a check mark in the US, and mean the same thing
Edit
Please ensure that any reply you add to this question is as culturally sensitive as the user interfaces we're all trying to build! Thanks.
You should try to follow the i18n and l10n pointers provided by the look and feel guidelines for the UI library you're using, or platform you're delivering to. They often contain hints on how to avoid cultural issues, and may even contain icon libraries that have had extensive testing for such potential banana skins.
Windows User Experience Interaction Guidelines
Java Look and Feel Design Guidelines
Apple Human Interface Guidelines
GNOME Human Interface Guidelines
KDE User Interface Guidelines
I guess the most important thing is designing your application with i18n in mind from the ground up, so that your UI can be resized depending on the translated text; mnemonics are appropriate for different languages; labels are to the left for latin languages, but on the right for Hebrew and Arabic, etc, etc.
Designing with i18n and l10n in mind means that shipping your product to a location with a different culture, language or currency will not require a re-write, or a different version, just different resources.
Generally speaking, I believe you'll run into more problems with graphics and icons that you will with text (apart from embarrassing translations) simply because people identify more strongly with symbols than particular passages of text.
The idiom to use a big (green) checkmark symbol to mean OK/Yes/Correct is somewhat confusing in Sweden, where the checkmark is typically used to mean "wrong". I.e. when grading tests in school, a teacher will often use a capital R (from the Swedish word for "Right") for a correct answer, and a checkmark ("bock" in Swedish) for "wrong".
I find this issue interesting not only because I'm in the affected group (I'm Swedish), but also because it highlights that these kinds of issues can appear where you might not expect them to. Sweden is a generic Western culture, you might assume that usage of these kinds of symbols should be the same.
Another Yes/No example for Japan
I have to use an online database tool that has some user settings that can be toggled on and off. On is indicated by a green cross (×), Off is indicated by a red circle (○).
In Japan this is confusing since Off (NG, stop, closed) in general would be indicated by a cross (× : batsu) and On (ok, open) by a circle (○ : maru).
Adding to that the green red color combination makes things very confusing.
There is a good reason why the Windows resources (and not only) contain more than just strings.
A lot of elements should be considered localizable:
- colors
- images (including icons, toolbars, etc.)
- sounds
- font and font sizes
- alignment
- control flags and attributes (think UI mirroring for Arabic & Hebrew)
- dialog sizes
- etc.
This way all most of the problems can be addressed by the localizers, without any code changes.
For dialogs resizing should either be done by the localizers (to leaving extra space is not necessary), or should use auto-layout (available in frameworks like Java, .NET, Flex, wxWidgets, Qt, etc.)
This might also be a good read: http://msdn.microsoft.com/en-us/goglobal/bb688120.aspx
You will not be able to identify all issues on your own.
Specialists in UI/cultures will cost you lots of money.
Design first for you primary region and then discover and fix (if you can) issues one by one.
/* Here was my opinion on the religious issues as applied to software design. Removed as the thread starter did not like it. */
Well these issues begin to play role when you grow to the big/international/corporate level. Until that happens better not bother. They call it "premature optimization".
The German language, you're right, content/markup ratio is noticeably lower when compared to English. Another difference is that the words tend to be very long which means not only text area will be longer, but you'll likely run into problems when words expand out of the container and not wrap.
How would you like that one: Kesselsteinentfernungsmittelherstellungsbetrieb ?
Honestly, you won't be able do design it that way as to please everyone. World cultures are in many way contradictory. As soon as you reached certain expansion level, you'll inevitably become a rip-off target for lots of jerk around the world who find the UI and colors of your application "offensive".
Have you ever heard about an accepted paradigm about how to design those kind of systems?
Im not talking about iphones but photo-kiosk or manufacturing systems
Rulas,
i have worked on a number of touchscreen apps. i never found a published set of standards like the ones you mention but here is a little bit of what i learned:
Create a limited "visual vocabulary" with the following rules:
Buttons should be 30 or more pixels high (and at least as wide) - simply increasing the width of a button will not make it easier to click
Try to place controls on similar points on the screen - exactly the same if feasible, so that users do not have to hunt in different parts of the screen for the same operation.
Avoid the need for scrolling - try tabs, paging, wizards etc. Using scrollbars on a touchscreen is very difficult
Consider how the screen will be used. Where will users put their hands? Will they rest their hands on the corners of the screen? Will the Power button be in the way?
As part of this rule set, create your own controls library that can be easily reused in other parts of the app
Try to omit or minimize typing on a "soft" keyboard. Make as many fields selectable as possible.
Have big buttons for "fat fingered" users.
Usability really matters.
Keep the touch screen well calibrated. This used to be a nightmare back in 1999; don't know how much better it is now.