|
Hello,
I want to implement something similar to map colouring (Not the famous problem but actually filling). Let us say, i have a picture of a continent, and i want to select a country and fill it with a colour and also in a list view, i want to highlight that country with some additional info.
At first, i thought i could get points (borders of a country), and use triangulation or polygon filling and define bounding rectangles or polygons (simple way, not using any tree implementation), but this approach needs lots of data generated by me. (using OpenGL)
my question is, is it feasible to implement this with a picture, detecting boundaries (i saw threads about edge detection) automatically for each country name and store them for hit testing and use filling algorithms (flood vs.)? (I am a real beginner on Image Processing, Bitmap Handling, GDI etc. )
How would you solve this?
Thank you,
Bekir Turkmen.
|
|
|
|
|
beko wrote: us say, i have a picture of a continent, and i want to select a country and fill it with a colour and also in a list view, i want to highlight that country with some additional info.
do you already know the boundaries of the countries ? if so, how are the boundaries stored ?
Cleek | Image Toolkits | Thumbnail maker
|
|
|
|
|
i dont know the boundaries initially.
However, i can find them manually and store them as point vectors for using input to Delaunay Triangulation (i have implemented one or two parts this way, without using any info from any picture) and display it with OpenGL.
I do not need any information about boundaries actually other than hit testing, so i thought i could retrieve those boundaries(using edge detection algorithms) from the picture directly and display the picture as the view.(In data preparation stage, for example, when i click Canada, i will generate the boundary data and define it as Canada and write to a file (perhaps with some processing to reduce number of points) to read it later for hit testing.)
Note that in the picture, boundaries are clearly given.
Thanks.
Bekir.
|
|
|
|
|
Way too little information to make a decent recommendation. If the area under the different regions have similiar features, look into doing some kind of connected component analysis.
Quran
Lectures (updated 1/3/06)
"They are MUSLIM. It does not matter how you split it up: all msulims (so they say) see every other muslim as a brother, regardless of origin or nationality." -legalAlien. Alhamdullah for the blessing of Islam
|
|
|
|
|
I suggest brute-force and pig-ignorance. It's not pretty, but it always works for me!
Assuming the map is static (because the countries / areas don't change) you could colour a bitmap image of the map offline, using some graphics package, so that all countries use different colours. If you use 24-bit colours, the difference could be in a single LSbit, which would un-noticeable.
Then display the map as a bitmap image. When you click on a point, get the colour under the cursor, and match that to the country, in order to get country-specific information. To change the colour you could (using brute force) loop through all the pixels in a copy of your original bitmap, replacing all pixels of the matching colour with a new colour, then display the updated bitmap.
|
|
|
|
|
Thanks for the suggestion,
I think that is quite practical, i will try to implement the way you suggested.
Thanks to all replies.
Bekir.
|
|
|
|
|
Great!
It's a lot easier to use the brute force approach and get the computer to work hard, rather than to have to learn how to implement complicated edge-detection algorithms.
Of course, if the map changes frequently, my suggestion would not be useful.
|
|
|
|
|
I want my MFC application will check whether another instance of it is already running or not. And if another inst. is running then it will kill the prev process. I want to know how get the information whether another instance is running and not? and how to get the process id of that one?
|
|
|
|
|
|
|
I have a multiple desktop application in which I am trying to set a different wall paper when you switch between different desktops. I am setting the wallpaper as:
<br />
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(void*)m_WallPaper,SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE)<br />
This seems to set the wall paper correctly, but after I call SwitchDesktop the wall paper vanishes a few seconds later. I create a seperate explorer.exe per desktop.
1. Does any one know if there is any other way to set the wall paper?
2. Is it possible to identify what causes the wall paper to change? I mean, who has changed it?
3. Is the wall paper set by the system or windows explorer?
4. Any ideas to debug why the wall paper vanishes?
thanks!
|
|
|
|
|
Brundiez wrote: SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(void*)m_WallPaper,SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE)
This won't work when ActiveDesktop is enabled. You need to use IActiveDesktop COM object to solve this.
http://www.codeproject.com/tools/wallpaperq.asp[^]
Jesus Lives Forever - Amen <marquee direction="up" height="40" scrolldelay="10" step=".5" scrollamount="1" style="background:#99ccff;border-bottom:thin solid 1px #6699cc">
--Owner drawn
--An eye for an eye makes the whole world blind.
--If you find my post helpful then do rate it.
--Jesus is Lord
|
|
|
|
|
1. From the look of my desktop, I dont think I have ActiveDesktop enabled. How do I confirm if it is enabled?
2. Does the IActiveDesktop COM object's way of setting the wall paper help in both the cases - ActiveDesktop is enabled and disabled?
3. FYI, I downloaded Virtual Desktop manager from http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx. I can change the wall paper in a desktop, but when I switch between desktop it doesnt seem remember and restore the wall paper that I changed. Have you used this, any idea why it doesnt work, is it a bug?
thanks!
|
|
|
|
|
convert char[] to cstring
Thanks in Advance
|
|
|
|
|
|
Thank u for ur responce
i am sorry , i need to assign a array element
CString s[10]
char ch[]
-
s[i]=ch
any how thanks a lot
|
|
|
|
|
ptr_Electron wrote: i am sorry , i need to assign a array element
So what
char str[] ="Owner drawn is a good boy";
CString str1[10];
str1[0] = str;
MessageBox(str1[0]);
Jesus Lives Forever - Amen <marquee direction="up" height="40" scrolldelay="10" step=".5" scrollamount="1" style="background:#99ccff;border-bottom:thin solid 1px #6699cc">
--Owner drawn
--An eye for an eye makes the whole world blind.
--If you find my post helpful then do rate it.
--Jesus is Lord
|
|
|
|
|
|
|
is the same way to do with CString array
Thank in Advance
|
|
|
|
|
|
|
Hi,
I have a dialog application where user enters hex values in CEditbox.
Is there a editbox where we can create a member variable of type HEX??
for CEDIT, only int, long, byte etc are possible but not HEX.
the hex value can range from 0x00 to 0xFFFFFFFFFFFFFFFF
in this case.
Any clues on how to do this????
- KK
|
|
|
|
|
|
I thought about that, but not sure of how to do that. Is there a code I can refer or has someone done something similar to this?
- KK
|
|
|
|