Visual Basic.Net
Понедельник, 04.08.2025, 00:34
Меню сайта

Форма входа

Друзья сайта
Создайте свой сайт Все для веб-мастера Программы для всех Мир развлечений WOlist.ru - каталог качественных сайтов Рунета

Статистика

Наш опрос
Оцените мой сайт
1. Отлично
2. Неплохо
3. Хорошо
4. Плохо
5. Ужасно
Всего ответов: 23

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Помогите нарисовать чертёж на форме с помощью DirectX
МишаИнженерДата: Четверг, 07.01.2016, 17:59 | Сообщение # 1
Полный ноль
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
.: Дополнительные данные :.
Бог форума
Здравствуйте!
Помогите нарисовать чертёж конструкции на форме таким образом чтобы не менялись пропорции чертежа при изменении размеров формы. Как я понимаю надо сначала вычислить габаритные размеры чертежа, посмотреть размеры формы и определить как максимально вписывать чертёж на форму: по ширине или по высоте.
В 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?
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Бесплатный конструктор сайтовuCoz