Система координат в MDI

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MIXer
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.01.2006 (Чт) 20:50
Откуда: М И И Т

Система координат в MDI

Сообщение MIXer » 17.02.2006 (Пт) 18:52

Народ, помогите разобраться с системой координат MDI интерфейса!!!
Конкретно требуется нарисовать горизонтальную линию (например, посередине) дочерней формы. Делаю следующим образом:
Код: Выделить всё
Me.Height = 6750 'высота формы
Me.Top=0
Line (0, Me.Height/ 2)-(10000, Me.Height/ 2)

Рисует, естественно не посередине! Почему?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.02.2006 (Пт) 19:09

а где рисует?
Весь мир матрица, а мы в нем потоки байтов!

MIXer
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.01.2006 (Чт) 20:50
Откуда: М И И Т

Сообщение MIXer » 17.02.2006 (Пт) 19:15

а где рисует?

Рисует гораздо ниже (за пределами видимости).
Другое дело, если рисовать так (получается чуть выше центра):
Код: Выделить всё
Line (0, YfrmMax / 25)-(10000, YfrmMax / 25)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.02.2006 (Пт) 19:24

Во-перых, используй свойства ScaleHeight и ScaleWidth, а во вторых у тебя какие единицы измерения установлены? Свойство ScaleMode то есть. Потому как размеры формы всегда в твипах, а рисовать можно например в пикселях
Весь мир матрица, а мы в нем потоки байтов!

MIXer
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.01.2006 (Чт) 20:50
Откуда: М И И Т

Сообщение MIXer » 17.02.2006 (Пт) 19:36

Свойство ScaleMode не менял (пользовательское)
Использование ScaleHeight и ScaleWidth помогло!!!
Интересно, а почему при Me.Height/2 не получалось?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 18.02.2006 (Сб) 7:05

Вчера малось обшибся. При использовании ScaleWidth и ScaleHeight все должно получиться при любом значении ScaleMode.

Свойства Height и Width - это размеры формы, включая заголовок и бордюры (они всегда измеряются в твипах), поэтому использование этих свойств при рисовании внктри формы не есть гуд. А вот ScaleWidth и ScaleHeight являются размерами клиентской области, именно их и надо использовать при рисовании. Они измеряются в тех единицах, которые указаны в свойстве ScaleMode.

В твоем коде использовалось Height вместе со свойством ScaleMode=0 (User), что и приводило к ошибке. По умолчанию, кстати, ScaleMode = 1 (Twips). А пользовательские единицы означают, что ты сам как программист задаешь размеры клиентской формы при помощи ScaleWidth и ScaleHeight.

Вроде понятно объяснил
Весь мир матрица, а мы в нем потоки байтов!

MIXer
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.01.2006 (Чт) 20:50
Откуда: М И И Т

Сообщение MIXer » 18.02.2006 (Сб) 20:38

2 !Viper!
Ага, вполне понятно, спасибо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 45

    TopList