그래서 이미지가있는 그림 상자가 있습니다. 여러 개의 직사각형과 같은 특정 상자를 장치에서 가져 오는 좌표가 있습니다. 당신이 pbZoneImage의 그림 상자에 대한 상대 포인트 값으로 변경이 나를 볼 수 있도록그림 상자에 직사각형 그리기 좌표 뒤집기?
Dim rectPoint_Start As Point =
New Point((newStartPoint_X * pbZoneImage.Width/resWidth),
newStartPoint_Y * pbZoneImage.Height/resHeight)
Dim rectPoint_End As Point =
New Point((newEndPoint_X * pbZoneImage.Width/resWidth),
newEndPoint_Y * pbZoneImage.Height/resHeight)
Dim rectangleHeight As Integer = (rectPoint_End.Y - rectPoint_Start.Y)
Dim rectangleWidth As Integer = (rectPoint_End.X - rectPoint_Start.X)
'localize
camRect1 = New Rectangle(rectPoint_Start.X, rectPoint_Start.Y, _
rectangleWidth, rectangleHeight)
If camRect1 <> Nothing Then g.DrawRectangle(Pens.Blue, camRect1)
RECT 좌표는 해상도로 스케일링에오고있다. 내가 겪고있는 문제는 (장치에서)받는 좌표가 (0,0) 점이 왼쪽 하단에 있다고 가정 할 때 PB가 왼쪽 상단부터 시작하여이 상자를 그립니다. g.drawRectangle()에서 그려지는 시작점의 방향을 변경하는 방법이 있습니까? 또는 다른 방법.
내가 지금까지 시도한 것은 rectPoint_End
과 rectPoint_Start
점에 (pbzoneImage.bottom) - ((newEndPoint_X * pbZoneImage.Width ....)
을 추가하는 것입니다. 그것은 작동하지 않는 것 같아서 나에게 부정적인 가치를 준다.
업데이트 :
그래서 이것이 내가 그것을 해결하기 위해 일을 결국 것입니다. 나는 내가받은 응답의 일부를 바탕으로 좌표계를 그리기 시작했고 오래된 학교 대수학을했다.
Dim rectangleHeight As Integer = Math.Floor((newEndPoint_Y - newStartPoint_Y) * pbZoneImage.Height)
Dim rectangleWidth As Integer = Math.Floor((newEndPoint_X - newStartPoint_X) * pbZoneImage.Height)
'flip rectangle
Dim rectPoint_Start As New Point((newStartPoint_X * pbZoneImage.Width), _
pbZoneImage.Height - (newStartPoint_Y * pbZoneImage.Height) - rectangleHeight)
Dim rectPoint_End As Point = New Point((newEndPoint_X * pbZoneImage.Width), _
pbZoneImage.Height - (newEndPoint_Y * pbZoneImage.Height) - rectangleHeight)
'localize
camRect1 = New Rectangle(rectPoint_Start.X, rectPoint_Start.Y, _
rectangleWidth, rectangleHeight)
너무 많은'they'와'them'은 계속 추적 할 것이므로, 나는 따라 가지 않는다. 그러나 Rectangle에는 Offset 메서드가 있습니다. * 작업하기 전에 Rectangle에 오프셋 메서드가 있습니다. * – Plutonix
아, 다음 질문에서 분명히 설명해 드리겠습니다. – Kat