all groups > c# > january 2005 >
You're in the

c#

group:

creating interactive controls (hit test based)


creating interactive controls (hit test based) Brian Henry
1/29/2005 10:31:57 PM
c#: Hi,

Is there any good tutorials out there on creating interactive custom
controls that have clickable objects that are drawn through GDI+ and use the
hit test method to determin what to do with them? or any good controls I
could use to look at the code for that do something similar (please not code
from code project, can't access the site from here currently, work network
is blocking the site for some reason) thanks!

Re: creating interactive controls (hit test based) Brian Henry
1/30/2005 12:22:41 PM
Hi Bob,

Nice example, but I noticed one thing with it. When you are drawing the line
it does not remove the line that extended off the form on the screen after
it's drawn (see attached image for example)



begin 666 error.png
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
M6KG^+"C;M,MG1VJMJMRAL\P4T:$VJ/]H>]RS;AP+2&OJ%9 ZGL:"Q,9WLW^
M_V@]=!M@[1M9;/5I2L>4!?+(.9*0]-T"4C2G:$.>2C&.!:0U]0I(';X_E838
ML'?[NO_0K,*LLDWY@H(C>V=(2HF.:X@7T&&*GZP0BG$L(*VI5T#JF#06#-NW
M^PY S*H-EVW*UR38O7&2)+>=+P,Y(*0^^N.YQK& M*9>`:ECTF<+E-Z:=!>,
Re: creating interactive controls (hit test based) Bob Powell [MVP]
1/30/2005 2:44:00 PM
You might enjoy the hit-testing lines and shapes article in the GDI+ FAQ.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.





[quoted text, click to view]

AddThis Social Bookmark Button