Beispiel #1
0
        /**
         * すべての軌跡を描画し、画像として保存する。
         */
        public void SaveAllTrack(string fileName)
        {
            //ファイルが閉じている
            if (playStatus == PlayStatus.Close)
            {
                throw new NxtLogFileNotOpenedException("ログファイルが開かれていません。");
            }

            //ログの最後
            int last = nxtTrackLog.Length - 1;

            //保存対象のBitmapを生成
            Size   courseImageSize = EtCourseScaler.GetPixelCourseSize();
            Bitmap trackImage      = new Bitmap(courseImageSize.Width, courseImageSize.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            Graphics g = Graphics.FromImage(trackImage);

            //ベース(コース)描画
            g.DrawImage(courseImage, 0, 0);

            //軌跡描画---------
            Point startPoint = EtCourseScaler.NativeToPixelInvY(nxtTrackLog.getLog(last).point);

            //最初の一点は必ず描画するため、開始座標を+1する
            startPoint.Offset(new Point(1, 1));

            Point endPoint;

            //色作成
            Pen linePen = new Pen(TRACK_LINE_COLOR, TRACK_LINE_WIDTH);

            for (int i = last; i >= 0; i--)
            {
                endPoint = EtCourseScaler.NativeToPixelInvY(nxtTrackLog.getLog(i).point);

                //描画
                g.DrawLine(linePen, startPoint, endPoint);

                startPoint = endPoint;
            }

            //保存
            trackImage.Save(fileName, ImageFormat.Png);
        }
Beispiel #2
0
        /**
         * コース画像を読み込んでリサイズし保持する。
         * 読込みに失敗した場合は同サイズの白い画像を作成して保持する。
         */
        private void InitializeImages()
        {
            Size courseImageSize = EtCourseScaler.GetPixelCourseSize();

            try
            {
                Assembly assembly = Assembly.GetExecutingAssembly();
                courseImage = new Bitmap(new Bitmap(assembly.GetManifestResourceStream(COURSE_IMAGE)), courseImageSize.Width, courseImageSize.Height);
            }
            catch (Exception)
            {
                courseImage = new Bitmap(courseImageSize.Width, courseImageSize.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                Graphics g = Graphics.FromImage(courseImage);
                g.Clear(Color.White);
                g.DrawString("コース画像を読み込めませんでした。起動は続行されますが、コース画像は表示されません。", DefaultFont, new SolidBrush(GRID_TEXT_COLOR), new Point(0, 0));
            }

            DrawGrid(courseImage, EtCourseScaler.NativeToPixel(GRID_PITCH));

            //renderTargetを同サイズに
            renderTarget = new Bitmap(courseImageSize.Width, courseImageSize.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
        }