Exemplo n.º 1
0
        private void drawTonnel(Graphics g, int width, int height)
        {
            StripeDrawing sd = new StripeDrawing(0, height / 2 - height / 14); //7 - потому что максимум 6 полос + 2 полосы для знаков и светофоров(эти полосы равны половине от обычных)

            sd.drawStripe(g, width, height / 7);
            sd.stripe = Road.getRoad().WAYS.First.Value.stripes.First.Value;
            stripeDrawings.AddLast(sd);
        }
Exemplo n.º 2
0
        private void drawMagistral(Graphics g, int width, int height)
        {
            g.Clear(Color.WhiteSmoke);

            if (Road.getRoad().COUNTOFWAYS == 2)
            {
                for (int i = 0; i < Road.getRoad().COUNTOFSTRIPES; i++)
                {
                    StripeDrawing leftWaySD = new StripeDrawing(0, height / 2 - (i + 1) * height / 7);
                    leftWaySD.stripe = Road.getRoad().WAYS.First.Value.stripes.ElementAt(i);
                    leftWaySD.drawStripe(g, width, height / 7);
                    stripeDrawings.AddLast(leftWaySD);
                    StripeDrawing rightWaySD = new StripeDrawing(0, height / 2 + i * height / 7);
                    rightWaySD.stripe = Road.getRoad().WAYS.Last.Value.stripes.ElementAt(i);
                    rightWaySD.drawStripe(g, width, height / 7);
                    stripeDrawings.AddLast(rightWaySD);
                    if (i < Road.getRoad().COUNTOFSTRIPES - 1)
                    {
                        LineDrawing ld1 = new LineDrawing(0, height / 2 - (i + 1) * height / 7, width, height / 2 - (i + 1) * height / 7);
                        ld1.drawBrokenLine(g);
                        ld1.whichLine = true;
                        lineDrawings.AddLast(ld1);
                        LineDrawing ld2 = new LineDrawing(0, height / 2 + (i + 1) * height / 7 - 2, width, height / 2 + (i + 1) * height / 7 - 2);
                        ld2.drawBrokenLine(g);
                        ld2.whichLine = true;
                        lineDrawings.AddLast(ld2);

                        //lineDrawing.drawBrokenLine(g, 0, height / 2 - (i + 1) * height / 7, width, height / 2 - (i + 1) * height / 7);
                        //lineDrawing.drawBrokenLine(g, 0, height / 2 + (i + 1) * height / 7 - 2, width, height / 2 + (i + 1) * height / 7 - 2);
                    }
                }
                //lineDrawing.drawSolidLine(g, 0, height / 2 - 1, width, height / 2 - 1);
                //lineDrawing.drawSolidLine(g, 0, height / 2 + 1, width, height / 2 + 1);
                LineDrawing solidLD1 = new LineDrawing(0, height / 2 - 1, width, height / 2 - 1);
                solidLD1.drawSolidLine(g);
                solidLD1.whichLine = false;
                lineDrawings.AddLast(solidLD1);
                LineDrawing solidLD2 = new LineDrawing(0, height / 2 + 1, width, height / 2 + 1);
                solidLD2.drawSolidLine(g);
                solidLD2.whichLine = false;
                lineDrawings.AddLast(solidLD2);
            }
            else
            {
                if (Road.getRoad().COUNTOFSTRIPES % 2 == 0)
                {
                    for (int i = 0; i < Road.getRoad().COUNTOFSTRIPES; i++)
                    {
                        StripeDrawing sd = new StripeDrawing(0, height / 2 + (Road.getRoad().COUNTOFSTRIPES / 2 - 1) * height / 7 - i * height / 7);
                        sd.stripe = Road.getRoad().WAYS.First.Value.stripes.ElementAt(i);
                        sd.drawStripe(g, width, height / 7);
                        if (i < Road.getRoad().COUNTOFSTRIPES - 1)
                        {
                            //lineDrawing.drawBrokenLine(g, 0, height / 2 + (Road.getRoad().COUNTOFSTRIPES / 2 - 1) * height / 7 - i * height / 7, width,
                            //                                height / 2 + (Road.getRoad().COUNTOFSTRIPES / 2 - 1) * height / 7 - i * height / 7);
                            LineDrawing ld = new LineDrawing(0, height / 2 + (Road.getRoad().COUNTOFSTRIPES / 2 - 1) * height / 7 - i * height / 7, width,
                                                             height / 2 + (Road.getRoad().COUNTOFSTRIPES / 2 - 1) * height / 7 - i * height / 7);
                            ld.drawBrokenLine(g);
                            ld.whichLine = true;
                            lineDrawings.AddLast(ld);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Road.getRoad().COUNTOFSTRIPES; i++)
                    {
                        StripeDrawing sd = new StripeDrawing(0, height / 2 + (Road.getRoad().COUNTOFSTRIPES - 3) / 2 *
                                                             height / 7 + height / 14 - i * height / 7);
                        sd.drawStripe(g, width, height / 7);
                        sd.stripe = Road.getRoad().WAYS.First.Value.stripes.ElementAt(i);     //пофиксить ошибку с вылетом(выход за пределы)
                        stripeDrawings.AddLast(sd);
                        if (i < Road.getRoad().COUNTOFSTRIPES - 1)
                        {
                            //lineDrawing.drawBrokenLine(g, 0, height / 2 + (Road.getRoad().COUNTOFSTRIPES - 3) / 2 *
                            //                                    height / 7 + height / 14 - i * height / 7, width, height / 2 + (Road.getRoad().COUNTOFSTRIPES - 3) / 2 *
                            //                                    height / 7 + height / 14 - i * height / 7);
                            LineDrawing ld = new LineDrawing(0, height / 2 + (Road.getRoad().COUNTOFSTRIPES - 3) / 2 *
                                                             height / 7 + height / 14 - i * height / 7, width, height / 2 + (Road.getRoad().COUNTOFSTRIPES - 3) / 2 *
                                                             height / 7 + height / 14 - i * height / 7);
                            ld.drawBrokenLine(g);
                            ld.whichLine = true;
                            lineDrawings.AddLast(ld);
                        }
                    }
                }
            }
        }