コード例 #1
0
ファイル: PrintWindow.cs プロジェクト: mattegan/xy-printer
 private void startPrinting()
 {
     currentState      = printState.PRINTING;
     statusLabel.Text  = "Printing!";
     currentPrintPoint = 0;
     sendPoint();
 }
コード例 #2
0
ファイル: PrintWindow.cs プロジェクト: mattegan/xy-printer
        private void preparePointsForPrinting(SizeF paperSize)
        {
            // tell the printViewer what the paper size was
            printViewer.paperBottomRight = new PointF(paperSize.Width, paperSize.Height);

            // search through the points for the min x, min y, max x, max y;

            float minX, maxX, minY, maxY;

            minX = maxX = printMaterial[0].X;
            minY = maxY = printMaterial[0].Y;
            for (int i = 0; i < printMaterial.Count; i++)
            {
                PointF p = printMaterial[i];
                if (p.X > maxX)
                {
                    maxX = p.X;
                }
                if (p.X < minX)
                {
                    minX = p.X;
                }
                if (p.Y > maxY)
                {
                    maxY = p.Y;
                }
                if (p.Y < minY)
                {
                    minY = p.Y;
                }
            }

            float drawingWidth  = maxX - minX;
            float drawingHeight = maxY - minY;

            float widthRatio  = paperSize.Width / (float)drawingWidth;
            float heightRatio = paperSize.Height / (float)drawingHeight;
            float scaleFactor = Math.Min(widthRatio, heightRatio);

            float paperCenterX   = paperSize.Width / 2;
            float paperCenterY   = paperSize.Height / 2;
            float drawingCenterX = (drawingWidth / 2) + minX;
            float drawingCenterY = (drawingHeight / 2) + minY;

            for (int i = 0; i < printMaterial.Count; i++)
            {
                PointF p = printMaterial[i];
                printMaterial[i] = new PointF(((p.X - drawingCenterX) * scaleFactor) + paperCenterX, ((p.Y - drawingCenterY) * scaleFactor) + paperCenterY);
            }

            printViewer.printPoints      = printMaterial;
            printViewer.currentDrawState = PrintViewControl.drawState.ALL_POINTS;
            printViewer.Invalidate();

            currentState     = printState.READY_TO_PRINT;
            statusLabel.Text = "Ready To Print";
        }
コード例 #3
0
ファイル: PrintWindow.cs プロジェクト: mattegan/xy-printer
 private void topLeftPointSetCallback(List <string> responses)
 {
     this.Invoke((MethodInvoker) delegate
     {
         waitingForSerialResponse     = false;
         currentState                 = printState.NEEDS_MOVE_BOTTOM_RIGHT;
         statusLabel.Text             = "Move Printer To Bottom Right";
         printViewer.paperTopLeft     = new PointF(0, 0);
         printViewer.currentDrawState = PrintViewControl.drawState.TOP_LEFT;
         printViewer.Invalidate();
     });
 }