コード例 #1
0
        // ステージ表示用のブラシを作成
        private void MakeStageBrushes()
        {
            if (loginfo.StageNames == null)
            {
                return;
            }

            ReadColorDef();

            StageBrushSet blueBrush =
                new StageBrushSet(
                    GetStageBrush(Color.MediumTurquoise.ToArgb(), false),
                    GetStageBrush(Color.MediumTurquoise.ToArgb(), true)
                    );
            StageBrushSet redBrush =
                new StageBrushSet(
                    GetStageBrush(Color.Salmon.ToArgb(), false),
                    GetStageBrush(Color.Salmon.ToArgb(), true)
                    );

            stageBrushes = new List <List <StageBrushSet> >();
            for (int segmentID = 0; segmentID < loginfo.StageNames.Count; segmentID++)
            {
                var stageNames = loginfo.StageNames[segmentID];

                List <StageBrushSet> brushes = new List <StageBrushSet>();
                foreach (var name in stageNames)
                {
                    StageBrushSet set = DefaultStageBrush;

                    if (config.ColorScheme == ColorScheme.Default)
                    {
                        if (brushMap[segmentID].ContainsKey(name))
                        {
                            set = brushMap[segmentID][name];
                        }
                    }
                    else if (config.ColorScheme == ColorScheme.Blue)
                    {
                        set = blueBrush;
                    }
                    else if (config.ColorScheme == ColorScheme.Red)
                    {
                        set = redBrush;
                    }

                    brushes.Add(set);
                }

                stageBrushes.Add(brushes);
            }
        }
コード例 #2
0
        // ステージ一つ分の描画
        private void DrawStage(
            Graphics renderTarget,
            int stageID,
            int segmentID,
            int x,
            int y,
            int length,
            string stageName,
            bool flushed
            )
        {
            if (length == 0)
            {
                return;
            }

            SizeF cell      = coordinateSystem.Cell;
            Size  stageSize =
                new Size(
                    length * (int)cell.Width,
                    (int)cell.Height - CellMarginHeight * 2
                    );

            Rectangle rect = new Rectangle(
                x,
                y,
                stageSize.Width,
                stageSize.Height
                );


            StageBrushSet brushSet = stageBrushes[segmentID][stageID];
            Brush         brush    = flushed ? brushSet.flushed : brushSet.normal;

            renderTarget.FillRectangle(brush, rect);
            if (currentViewSetting.DrawOutline)
            {
                renderTarget.DrawRectangle(Pens.Black, rect);
            }

            if (currentViewSetting.DrawStageName)
            {
                Font   stageFont = StageFont;
                PointF p         = rect.Location;
                SizeF  size      = renderTarget.MeasureString(stageName, stageFont);
                p.X += cell.Width / 2 - size.Width / 2;
                p.Y += cell.Height / 2 - size.Height / 2;
                renderTarget.DrawString(stageName, stageFont, Brushes.Black, p);

                for (int j = 1; j < length; j++)
                {
                    p.X = rect.Location.X + j * cell.Width;
                    if (!renderTarget.ClipBounds.IntersectsWith(new RectangleF(p, cell)))
                    {
                        continue;
                    }
                    String s = (j + 1).ToString();
                    size = renderTarget.MeasureString(s, stageFont);
                    p.X += cell.Width / 2 - size.Width / 2;
                    renderTarget.DrawString(s, stageFont, Brushes.Gray, p);
                }
            }
        }