private void startPrinting() { currentState = printState.PRINTING; statusLabel.Text = "Printing!"; currentPrintPoint = 0; sendPoint(); }
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"; }
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(); }); }