Painted Hills is located in southeastern Morgan County. Indiana State Road 252 forms the northeast border of the community, leading northwest 5 miles (8 km) to Martinsville and southeast the same distance to Morgantown.
According to the U.S. Census Bureau, the community has an area of 1.95 square miles (5.05 km2), of which 1.73 square miles (4.48 km2) are land and 0.22 square miles (0.57 km2), or 11.37%, are water.[1] The lakes in the community, shown as Painted Hills Lake and Little Nebo Lake on federal maps, are built on Camp Creek, a south-flowing tributary of Indian Creek, which leads northwest to the White River south of Martinsville.