Пример #1
0
        private void drawing_Paint(object sender, PaintEventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            if (!(drawingArea is null))

            {
                framesCounted++;

                drawingArea.Access();

                Graphics graphics = e.Graphics;
                graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
                // graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
                // graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed;
                // graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low;

                graphics.Clear(Color.White);


                foreach (DrawingAreaState.DrawingObject obj in drawingArea.objects)
                {
                    DrawObject(drawingArea, obj, graphics);
                }

                drawingArea.CheckPendingObjects();
                foreach (DrawingAreaState.PendingObject pobj in drawingArea.pendingObjects)
                {
                    DrawObject(drawingArea, pobj.obj, graphics);
                }

                foreach (KeyValuePair <string, DrawingAreaState.MousePosition> entry in drawingArea.mousePositions)
                {
                    // do something with entry.Value or entry.Key
                    DrawingAreaState.MousePosition pos = entry.Value;

                    graphics.DrawLine(new Pen(Brushes.Black),
                                      pos.xpos * drawingArea.areaSize.X - 5, pos.ypos * drawingArea.areaSize.Y - 5,
                                      pos.xpos * drawingArea.areaSize.X + 5, pos.ypos * drawingArea.areaSize.Y + 5);
                    graphics.DrawLine(new Pen(Brushes.Black),
                                      pos.xpos * drawingArea.areaSize.X + 5, pos.ypos * drawingArea.areaSize.Y - 5,
                                      pos.xpos * drawingArea.areaSize.X - 5, pos.ypos * drawingArea.areaSize.Y + 5);

                    graphics.DrawString(pos.username, new Font("Courier New", 12.0f), Brushes.Black, pos.xpos * drawingArea.areaSize.X, pos.ypos * drawingArea.areaSize.Y - 25.0f);
                }

                if (!(drawingArea.tempObject is null))
                {
                    DrawObject(drawingArea, drawingArea.tempObject, graphics);
                }

                graphics.DrawString("FPS: " + FPS.ToString(), new Font("Courier New", 12.0f), Brushes.Black, 5, 5);


                drawingArea.Exit();
            }
        }
Пример #2
0
        private void penButton_Click(object sender, EventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            drawingArea.selectedTool = DrawingAreaState.Tools.PENCIL;
            drawingArea.Exit();

            drawing.Cursor = new Cursor(new System.IO.MemoryStream(Properties.Resources.mspaint_pencil_8bit));
        }
Пример #3
0
        private void elipseButton_Click(object sender, EventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            drawingArea.selectedTool = DrawingAreaState.Tools.OVAL;
            drawingArea.Exit();

            drawing.Cursor = new Cursor(new System.IO.MemoryStream(Properties.Resources.cross));
        }
Пример #4
0
        private void ThicknessBar_Scroll(object sender, EventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            drawingArea.thickness = (float)ThicknessBar.Value / 1000.0f;
            drawingArea.Exit();

            ThicknessLabel.Text = "Grubość: " + drawingArea.thickness.ToString("0.000");
        }
Пример #5
0
        private void BGColorButton_Click(object sender, EventArgs e)
        {
            BGColor.ShowDialog();

            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            drawingArea.BackgroundColor = Color.FromArgb(drawingArea.BackgroundColor.A, BGColor.Color);
            drawingArea.Exit();

            BGColorButton.BackColor = BGColor.Color;
        }
Пример #6
0
        private void drawing_MouseUp(object sender, MouseEventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            if (drawingArea.state == DrawingAreaState.State.DRAWING)
            {
                DrawingAreaState.DrawingObject obj = drawingArea.tempObject;

                if (client.loggedIn)
                {
                    drawingArea.FinalizeObject(this, drawingArea.tempObject);

                    switch (drawingArea.selectedTool)
                    {
                    case DrawingAreaState.Tools.RECTANGLE:
                        client.clientMachine.SendRectangle((DrawingAreaState.RectangleObject)obj);
                        break;

                    case DrawingAreaState.Tools.OVAL:
                        client.clientMachine.SendOval((DrawingAreaState.OvalObject)obj);
                        break;

                    case DrawingAreaState.Tools.PENCIL:
                        // add one more point to end
                        Point ms = drawingArea.mousepos_start;
                        Point mn = drawingArea.mousepos_now;

                        DrawingAreaState.PathObject path = (DrawingAreaState.PathObject)obj;
                        path.anotherXposs.Add((float)(mn.X) / (float)drawingArea.areaSize.X);
                        path.anotherYposs.Add((float)(mn.Y) / (float)drawingArea.areaSize.Y);

                        client.clientMachine.SendPath((DrawingAreaState.PathObject)obj);
                        break;

                    case DrawingAreaState.Tools.LINE:
                        client.clientMachine.SendPath((DrawingAreaState.PathObject)obj);
                        break;
                    }
                }

                drawingArea.tempObject = null;

                drawingArea.state = DrawingAreaState.State.IDLE;
            }
            drawingArea.Exit();



            drawing.Refresh();
            // RefreshTimer.Interval = 100;
        }
Пример #7
0
        private void drawing_MouseDown(object sender, MouseEventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            if (drawingArea.state == DrawingAreaState.State.IDLE)

            {
                drawingArea.state          = DrawingAreaState.State.DRAWING;
                drawingArea.mousepos_start = new Point(e.X, e.Y);
                drawingArea.mousepos_now   = new Point(e.X, e.Y);
                switch (drawingArea.selectedTool)
                {
                case DrawingAreaState.Tools.LINE:
                    drawingArea.tempObject = new DrawingAreaState.PathObject(-1,
                                                                             (float)(e.X) / (float)drawingArea.areaSize.X,
                                                                             (float)(e.Y) / (float)drawingArea.areaSize.Y,
                                                                             new List <float>(),
                                                                             new List <float>(), drawingArea.thickness, drawingArea.ForegroundColor);
                    break;

                case DrawingAreaState.Tools.PENCIL:
                    drawingArea.tempObject = new DrawingAreaState.PathObject(-1,
                                                                             (float)(e.X) / (float)drawingArea.areaSize.X,
                                                                             (float)(e.Y) / (float)drawingArea.areaSize.Y,
                                                                             new List <float>(),
                                                                             new List <float>(), drawingArea.thickness, drawingArea.ForegroundColor);
                    break;

                case DrawingAreaState.Tools.RECTANGLE:
                    drawingArea.tempObject = new DrawingAreaState.RectangleObject(-1,
                                                                                  (float)(e.X) / (float)drawingArea.areaSize.X,
                                                                                  (float)(e.Y) / (float)drawingArea.areaSize.Y,
                                                                                  (float)0,
                                                                                  (float)0, drawingArea.thickness, drawingArea.ForegroundColor, drawingArea.BackgroundColor);
                    break;


                case DrawingAreaState.Tools.OVAL:
                    drawingArea.tempObject = new DrawingAreaState.OvalObject(-1,
                                                                             (float)(e.X) / (float)drawingArea.areaSize.X,
                                                                             (float)(e.Y) / (float)drawingArea.areaSize.Y,
                                                                             (float)0,
                                                                             (float)0, drawingArea.thickness, drawingArea.ForegroundColor, drawingArea.BackgroundColor);
                    break;
                }
            }
            drawingArea.Exit();

            drawing.Refresh();
            //  RefreshTimer.Interval = 33;
        }
Пример #8
0
        private void drawing_MouseMove(object sender, MouseEventArgs e)
        {
            DrawingAreaState drawingArea = client.clientMachine.drawingArea;

            drawingArea.Access();
            drawingArea.mousePosition.X = (float)e.Location.X / (float)drawingArea.areaSize.X;
            drawingArea.mousePosition.Y = (float)e.Location.Y / (float)drawingArea.areaSize.Y;

            if (client.loggedIn && checkBox1.Checked)
            {
                if (mousePositionLastSentTime + new TimeSpan(0, 0, 0, 0, mousePositionSendInterval_ms) < DateTime.Now)
                {
                    mousePositionLastSentTime = DateTime.Now;

                    client.clientMachine.SendMousePosition(drawingArea.mousePosition);
                }
            }


            DrawingAreaState.State drawingAreaState = drawingArea.state;
            if (drawingArea.state == DrawingAreaState.State.DRAWING)
            {
                drawingArea.mousepos_now = new Point(e.X, e.Y);
                Point ms = drawingArea.mousepos_start;
                Point mn = drawingArea.mousepos_now;

                DrawingAreaState.DrawingObject obj = drawingArea.tempObject;
                switch (drawingArea.selectedTool)
                {
                case DrawingAreaState.Tools.LINE:
                    DrawingAreaState.PathObject line = (DrawingAreaState.PathObject)obj;
                    line.anotherXposs.Clear();
                    line.anotherYposs.Clear();
                    line.anotherXposs.Add((float)(mn.X) / (float)drawingArea.areaSize.X);
                    line.anotherYposs.Add((float)(mn.Y) / (float)drawingArea.areaSize.Y);
                    break;

                case DrawingAreaState.Tools.PENCIL:
                    if (pencilLastSentTime + new TimeSpan(0, 0, 0, 0, pencilSendInterval_ms) < DateTime.Now)
                    {
                        pencilLastSentTime = DateTime.Now;

                        DrawingAreaState.PathObject path = (DrawingAreaState.PathObject)obj;
                        path.anotherXposs.Add((float)(mn.X) / (float)drawingArea.areaSize.X);
                        path.anotherYposs.Add((float)(mn.Y) / (float)drawingArea.areaSize.Y);

                        if (path.anotherXposs.Count > 300)
                        {
                            // dirty fix -> every 5 seconds end existing path and begin next to circumvent overflow exception.
                            drawingArea.Exit();
                            drawing_MouseUp(sender, e);
                            drawing_MouseDown(sender, e);
                            drawingArea.Access();
                        }
                    }


                    break;

                case DrawingAreaState.Tools.RECTANGLE:
                    DrawingAreaState.RectangleObject rect = (DrawingAreaState.RectangleObject)obj;
                    rect.xpos   = (mn.X - ms.X) > 0 ? ((float)ms.X / (float)drawingArea.areaSize.X) : ((float)mn.X / (float)drawingArea.areaSize.X);
                    rect.ypos   = (mn.Y - ms.Y) > 0 ? ((float)ms.Y / (float)drawingArea.areaSize.Y) : ((float)mn.Y / (float)drawingArea.areaSize.Y);
                    rect.width  = (mn.X - ms.X) > 0 ? ((float)(mn.X - ms.X) / (float)drawingArea.areaSize.X) : ((float)(ms.X - mn.X) / (float)drawingArea.areaSize.X);
                    rect.height = (mn.Y - ms.Y) > 0 ? ((float)(mn.Y - ms.Y) / (float)drawingArea.areaSize.Y) : ((float)(ms.Y - mn.Y) / (float)drawingArea.areaSize.Y);
                    break;

                case DrawingAreaState.Tools.OVAL:
                    DrawingAreaState.OvalObject oval = (DrawingAreaState.OvalObject)obj;
                    oval.xpos   = (mn.X - ms.X) > 0 ? ((float)ms.X / (float)drawingArea.areaSize.X) : ((float)mn.X / (float)drawingArea.areaSize.X);
                    oval.ypos   = (mn.Y - ms.Y) > 0 ? ((float)ms.Y / (float)drawingArea.areaSize.Y) : ((float)mn.Y / (float)drawingArea.areaSize.Y);
                    oval.width  = (mn.X - ms.X) > 0 ? ((float)(mn.X - ms.X) / (float)drawingArea.areaSize.X) : ((float)(ms.X - mn.X) / (float)drawingArea.areaSize.X);
                    oval.height = (mn.Y - ms.Y) > 0 ? ((float)(mn.Y - ms.Y) / (float)drawingArea.areaSize.Y) : ((float)(ms.Y - mn.Y) / (float)drawingArea.areaSize.Y);
                    break;
                }
            }
            drawingArea.Exit();

            if (drawingAreaState == DrawingAreaState.State.DRAWING || drawingAreaState == DrawingAreaState.State.EDITING)
            {
                drawing.Refresh();
            }

            /*
             * drawingArea.Access();
             * drawingArea.mousePositions["nkpkiller"] = new DrawingAreaState.MousePosition((float)(e.X) / (float)drawingArea.areaSize.X, (float)(e.Y) / (float)drawingArea.areaSize.Y, "nkpkiller");
             * drawingArea.Exit();
             */

            Application.DoEvents();
            // drawing.Refresh();
        }