[Mono-bugs] [Bug 82835][Blo] New - GraphicsPath.IsVisible does not hit test shapes properly.

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Thu Sep 13 10:23:55 EDT 2007


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by brock.reeve at ni.com.

http://bugzilla.ximian.com/show_bug.cgi?id=82835

--- shadow/82835	2007-09-13 10:23:55.000000000 -0400
+++ shadow/82835.tmp.15465	2007-09-13 10:23:55.000000000 -0400
@@ -0,0 +1,63 @@
+Bug#: 82835
+Product: Mono: Class Libraries
+Version: 1.2
+OS: SUSE 9.2
+OS Details: I am actuall using openSUSE 10.2. This also doesn't work on MacOS
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Blocker
+Component: Sys.Drawing.
+AssignedTo: mono-bugs at ximian.com                            
+ReportedBy: brock.reeve at ni.com               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: GraphicsPath.IsVisible does not hit test shapes properly.
+
+Description of Problem:
+GraphicsPath.IsVisible does not work correctly on non windows machines. I 
+am using the latest version of MONO 1.2.5
+
+Steps to reproduce the problem:
+- Create a new Windows Forms application on WindowsXP using VS2005.
+- Drop a textbox onto the bottom portion of the form.
+- Paste the following code into the form class definition.
+ private GraphicsPath CreatePath()
+        {
+            GraphicsPath path = new GraphicsPath();
+            path.AddEllipse(new Rectangle(20, 20, 100, 100));
+            return path;
+        }
+
+        protected override void OnPaint(PaintEventArgs e)
+        {
+            base.OnPaint(e);
+
+            using (GraphicsPath path = CreatePath())                
+                e.Graphics.FillPath(Brushes.Red, path);
+        }
+
+        protected override void OnMouseMove(MouseEventArgs e)
+        {
+            base.OnMouseMove(e);
+            bool hit = false;
+            using (GraphicsPath path = CreatePath())
+                hit = path.IsVisible(e.X, e.Y);
+
+            textBox1.Text = hit ? "hit" : "miss";
+        }
+
+
+Results:
+
+The string "hit" is never displayed in the texbox when the mouse is moved 
+over the red circle when running on non-windows systems. It works fine on 
+windows. I expect "hit" to be display when mouse is over the red circle, 
+just like windows.
+
+Additional Information:
+
+We are working on a port of our Windows forms controls. We use 
+GraphicsPath.IsVisible a ton for hit testing more complicated shapes.


More information about the mono-bugs mailing list