окно просмотра масштабирования размера объекта -> предварительный просмотр
Вопрос
Я играю с проектом, в котором я могу размещать объекты во время выполнения на экране.У меня также есть небольшое окно "предварительного просмотра", в котором я хочу увидеть контуры объектов.
У меня есть массив объектов, которые имеют размер и местоположение на "сцене".Теперь я хочу перебрать свои объекты сцены и создать по одному picturebox в окне предварительного просмотра для каждого объекта в "сцене".
Итак, у меня есть размер "Сцены" и массив объектов, которые видны на сцене.Каждый объект имеет размер и местоположение, сопоставленные со сценой.
У меня также есть окно предварительного просмотра, которое имеет динамический размер.Как мне создать предварительный просмотр, масштабируемый до размера окна предварительного просмотра?Чтобы упростить задачу, я перебираю объекты сцены в scene и создаю picturebox в форме предварительного просмотра для каждого объекта, который использует размер формы предварительного просмотра для масштабирования.
SceneSize=new size(800,600)
PreviewSize=new size(80,60)
For each obj as SceneObject in Scene
dim p as new picturebox
p.size=?? scaling here (we have obj.size and obj.location)
p.location=?? scaling here (we have obj.size and obj.location)
previewWindow.controls.add (p)
next
Любой пример в .Net был бы хорош.
Спасибо.
Решение 2
Это сработало, это было не сложнее, чем сейчас.
Function GetPreviewRectangleForObject(ByVal ScreenSize As Size, ByVal PreviewSize As Size, ByVal OriginalRect As Rectangle) As Rectangle
Dim xFactor As Integer = ScreenSize.Width / PreviewSize.Width
Dim yFactor As Integer = ScreenSize.Height / PreviewSize.Height
With OriginalRect
Return New Rectangle(.X / xFactor, .Y / yFactor, .Width / xFactor, .Height / yFactor)
End With
End Function
Другие советы
На сайте Боба Пауэлла в GDI + может содержаться полезная информация о том, как действовать дальше.Загляните на его страницу, посвященную матричным преобразованиям.Эта статья может дать вам несколько хороших идей о том, как действовать дальше