- Сообщения
- 588
- Реакции
- 4
Во вложении прикрепил файл Corel X3. Там в красном прямоугольнике расположен жёлтый прямоугольник. Задача: получить значение [IsOnShape = cdrInsideShape] для угловой точки жёлтого прямоугольника. Выделяем оба прямоугольника и запускаем вот этот код:
Результат: на больших масштабах отображения получаем значение [cdrInsideShape], на малых [cdrOutsideShape]
Возможно, это зависит от 3-го параметра HotArea:
1) При его отсутствии (используется значение по умолчанию) наблюдается описанная картина
2) При указании любого положительного значения (1, 0.1, 0.0001) получаем всегда [cdrOutsideShape] на любых масштабах отображения
В общем, нужно сделать так, чтобы на любых масштабах IsOnShape возвращал [cdrInsideShape]
4 часа коту под хвост. Измучался с отладкой, пока проблему локализовывал. Нужно поспать чуток...
Код:
Sub testIsOnShape()
Dim big As shape, small As shape
If (ActiveSelectionRange.item(1).SizeWidth > ActiveSelectionRange.item(2).SizeWidth) Then
Set big = ActiveSelectionRange.item(1)
Set small = ActiveSelectionRange.item(2)
Else
Set big = ActiveSelectionRange.item(2)
Set small = ActiveSelectionRange.item(1)
End If
MsgBox "Влезает ли [small] в [big]: " & vbCrLf & (big.IsOnShape(small.LeftX + small.SizeWidth, small.BottomY) = cdrPositionOfPointOverShape.cdrInsideShape)
End Sub
Результат: на больших масштабах отображения получаем значение [cdrInsideShape], на малых [cdrOutsideShape]
Возможно, это зависит от 3-го параметра HotArea:
1) При его отсутствии (используется значение по умолчанию) наблюдается описанная картина
2) При указании любого положительного значения (1, 0.1, 0.0001) получаем всегда [cdrOutsideShape] на любых масштабах отображения
В общем, нужно сделать так, чтобы на любых масштабах IsOnShape возвращал [cdrInsideShape]
4 часа коту под хвост. Измучался с отладкой, пока проблему локализовывал. Нужно поспать чуток...
Последнее редактирование: