public void DragPoint(int index, System.Drawing.PointF newPosition) { if (index < 0 || index > 3) { throw new System.ArgumentOutOfRangeException("index"); } UpdateInverseMatrix(); System.Drawing.PointF newBasePoint = newPosition; VObjectsUtils.TransformPoint(_objInverseMatrix, ref newBasePoint); System.Drawing.PointF scaleRefPoint = GetScaleRefPoint(index); float dx = Math.Sign(_points[index].X - scaleRefPoint.X) * (newBasePoint.X - _points[index].X); float dy = Math.Sign(_points[index].Y - scaleRefPoint.Y) * (newBasePoint.Y - _points[index].Y); System.Drawing.RectangleF newBounds = VObjectsUtils.GetBoundingRectangle(newBasePoint, scaleRefPoint); if (newBounds.Width < 1 || newBounds.Height < 1) { return; } if (_obj.TextArea.Height + dy < 0) { _flipY = !_flipY; } if (_obj.TextArea.Width + dx < 0) { _flipX = !_flipX; } _obj.TextArea = newBounds; }
private void UpdateControlPoints() { if (_updateControlPoints) { UpdateBaseRectanglePoints(); System.Drawing.PointF[] interim = VObjectsUtils.TransformPoints(_obj.Transform, _points); for (int i = 0; i < _transformedPoints.Count; i++) { _transformedPoints[i].Location = interim[i]; } _updateControlPoints = false; } }
private void LayerRemovedHandler(object sender, LayerRemovedEventArgs e) { if (e.Layer == _currentLayer) { if (_layers.Count > 0) { int newIndex = e.Index - 1; ChangeCurrentLayer(_layers[VObjectsUtils.FitToBounds(newIndex, 0, _layers.Count - 1)]); } else { ChangeCurrentLayer(null); } } if (_hostViewer != null) { _hostViewer.InvalidateViewer(); } }