МишаИнженер | Дата: Четверг, 07.01.2016, 17:59 | Сообщение # 1 |
Полный ноль
Группа: Пользователи
Сообщений: 1
| Здравствуйте! Помогите нарисовать чертёж конструкции на форме таким образом чтобы не менялись пропорции чертежа при изменении размеров формы. Как я понимаю надо сначала вычислить габаритные размеры чертежа, посмотреть размеры формы и определить как максимально вписывать чертёж на форму: по ширине или по высоте. В VB6 у меня нормально работал следующий код:
Dim Чертёж As PictureBox Public Sub НазначитьМасштабЧертежа(X1К As Double, Y1К As Double, X2К As Double, Y2К As Double) 'Функция выполняет масштабирование элемента Picture Dim ШиринаЧ As Double, ВысотаЧ As Double Dim ШиринаК As Double, ВысотаК As Double Dim X1Ч As Double, Y1Ч As Double Dim X2Ч As Double, Y2Ч As Double Dim Dx As Double, Dy As Double Dim ДопСлаг As Double ДопОбл = 0.1 * Диаг X1К = X1К - ДопОбл: Y1К = Y1К - ДопОбл X2К = X2К + ДопОбл: Y2К = Y2К + ДопОбл ШиринаЧ = Чертёж.Width: ВысотаЧ = Чертёж.Height ШиринаК = X2К - X1К: ВысотаК = Y2К - Y1К 'Зададимся правильной шириной и проверим высоту, иначе по высоте If ШиринаК * ВысотаЧ / ШиринаЧ > ВысотаК Then X2Ч = X2К Y2Ч = Y1К + ШиринаК * ВысотаЧ / ШиринаЧ ДопСлаг = ДопОбл * ВысотаЧ / ШиринаЧ Dx = 0 Dy = Y2Ч - Y2К + 1.5 * ДопОбл Else X2Ч = X1К + ВысотаК * ШиринаЧ / ВысотаЧ Y2Ч = Y2К ДопСлаг = ДопОбл * ШиринаЧ / ВысотаЧ Dx = X2Ч - X2К Dy = 1.5 * ДопОбл End If 'Переместим изображение в центр чертежа X1Ч = X1К - Dx / 2: Y1Ч = Y1К - Dy / 2 X2Ч = X2Ч - Dx / 2: Y2Ч = Y2Ч - Dy / 2 'Отмасштабируем чертёж Чертёж.Scale (X1Ч, -Y1Ч)-(X2Ч, -Y2Ч) End Sub
В форме надо чтобы был следующий код: Private Sub Form_Resize() Me.Picture1.Cls Picture1.Left = 0 Picture1.Top = 0 Picture1.Width = ScaleWidth Picture1.Height = ScaleHeight call НачертитьКонструкцию End Sub
С помощью этой функции я масштабировал объект PictureBox1 на форме под максимальные или экстремальные размеры конструкции: X1К, Y1К, X2К, Y2К которые определяют нижний левый и правый верхний углы конструкции. При этом ещё с помощью метода Scale удаётся перемещать вычерчиваемую конструкцию в центр формы которую можно растягивать мышкой до любых размеров. Конструкция при этом оставаясь пропорциональной увеличивается или уменьшается в размерах в зависимости от размеров формы. А как сделать всё то же самое в Visual Basic Net с помощью DirectX?
|
|
| |