예제 #1
0
        /// <summary>
        /// Resizes the InkPicture to the bounding box of the Ink
        /// or the size of this panel (whichever is larger).  Call this
        /// after transforming the ink in a way that might change
        /// the ink's bounding box.
        /// TODO: resize such that we catch (allow scrolling for)
        /// ink with negative coordinate values.
        /// </summary>
        private void resizeInkPicture()
        {
            // Get lower right corner (x,y) of Ink
            Rectangle currentInkBoundingBox = inkPic.Ink.GetBoundingBox();

            System.Drawing.Point lowerRight = new System.Drawing.Point(currentInkBoundingBox.Right, currentInkBoundingBox.Bottom);
            lowerRight.X += SketchPanelConstants.SketchPaddingInk;
            lowerRight.Y += SketchPanelConstants.SketchPaddingInk;
            using (Graphics g = inkPic.CreateGraphics())
            {
                inkPic.Renderer.InkSpaceToPixel(g, ref lowerRight);
            }

            // For now, only make inkPic bigger.
            if (lowerRight.X > Math.Max(inkPic.Width, this.Width))
            {
                inkPic.Width = lowerRight.X;
            }
            //else
            //{
            //    inkPic.Width = this.Width;
            //}

            if (lowerRight.Y > Math.Max(inkPic.Height, this.Height))
            {
                inkPic.Height = lowerRight.Y;
            }
            //else
            //{
            //    inkPic.Height = this.Height;
            //}
        }
 /// <summary>
 /// Invalidate the stroke if FitToCurve is set or there is transparency.
 /// </summary>
 private void OnInkPicture_Stroke(object sender, Microsoft.Ink.InkCollectorStrokeEventArgs e)
 {
     if ((inkPicture.EditingMode == InkOverlayEditingMode.Ink) &&
         (inkPicture.DefaultDrawingAttributes.FitToCurve ||
          ((inkPicture.DefaultDrawingAttributes.Transparency > 0) && !m_optimizeForHighlighter.Checked)))
     {
         using (Graphics g = inkPicture.CreateGraphics())
         {
             inkPicture.Invalidate(InkSpaceToPixel(g, e.Stroke.GetBoundingBox()));
         }
     }
 }