This Tutorial will show how to detect is an object is outside of the screen and thus the user cant see it
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
DetectingObjectOutsideOfScreen
DetectingObjectOutsideOfScreen.sln
DetectingObjectOutsideOfScreen.v12.suo
LICENSE
README.md

README.md

Detecting if an object is outside of the screen for Windows (8/8.1) Store Apps (C#/XAML)

How to detect if an object is intersecting with another object

This is a tutorial on how to implement a methode that allows us to see if you have 2 objects that are intersecting with one another. I mainly use this to see if an object is outside of the screen for the user and thus need to show him something else when that object is not visible anymore.

If you don't want to have to look at the code here is the important part, these two methodes IsObjectHidden and IntersectsWith.

IsObjectHidden Methode

//the object of this methode is to create 2 rectangles, from our two objects and see they intersect or not
protected bool IsObjectHidden(FrameworkElement child, FrameworkElement scrollViewer, int Offset)
{
	//Getting the information related to the scrollViewer
	GeneralTransform childTransform = child.TransformToVisual(scrollViewer);
	//creating out first rectangle using the object that i wish to ttrack
	Rect childRectangle = childTransform.TransformBounds(new Rect(new Point(0, 0), child.RenderSize));
	//creating out second rectangle  using the scrollViewer
	Rect ownerRectangle = new Rect(new Point(0, 0), scrollViewer.RenderSize);
	//Testing
	bool isInterset = IntersectsWith(childRectangle, ownerRectangle, Offset);
	return !isInterset;
}

IsObjectHidden

//the object of this methode is to create 2 rectangles, from our two objects and see they intersect or not
public static bool IntersectsWith(Rect rect, Rect other, int offset)
{
	// Test for separating axis on the two rectangles
	if (other.Bottom < rect.Top || other.Right < rect.Left
	|| other.Top > rect.Bottom || other.Left > (rect.Right - offset))
	{
		return false;
	}
	return true;
}

I have only tested this on Windows Store apps

Supported Platforms

  • Windows Store

Contribute

Please help out

##License

This project is licensed under the MIT license.