示例#1
0
        private void panel_back_Paint(object sender, PaintEventArgs e)
        {
            BufferedPanel bp = (BufferedPanel)sender;
            Rectangle     board_rect1;

            if (panel_board.Width < panel_board.Height)
            {
                board_rect1 = new Rectangle((int)(panel_board.Location.X + m_board_start_x),
                                            (int)(panel_board.Location.Y + m_board_start_y),
                                            panel_board.Width, panel_board.Width);
            }
            else
            {
                board_rect1 = new Rectangle((int)(panel_board.Location.X + m_board_start_x),
                                            (int)(panel_board.Location.Y + m_board_start_y),
                                            panel_board.Height, panel_board.Height);
            }

            Rectangle board_rect2 = new Rectangle(bp.Location,
                                                  new Size(bp.Width, bp.Height));

            Region rgn = new Region(board_rect2);

            rgn.Xor(board_rect1);

            e.Graphics.Clip = rgn;
            e.Graphics.DrawImage(m_back_bitmap, 0, 0, bp.Width, bp.Height);
        }
示例#2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            m_back_bitmap   = new System.Drawing.Bitmap(@"pic\japanese-chess-bg.jpg");
            m_panel1_bitmap = new System.Drawing.Bitmap(@"pic\japanese-chess-b02.jpg");


            // 駒の画像取得
            komaPicArray = new Bitmap[BoardInfo.KOMA_NUM];
            for (int i = 0; i < komaPicArray.Length; i++)
            {
                komaPicArray[i] = new System.Drawing.Bitmap(@"pic\koma\60x64\sgl" + (i + 1).ToString("D2") + ".png");
            }

            // 盤面背景のセット
            panel_back          = new BufferedPanel(false);
            panel_back.Width    = 800;
            panel_back.Height   = 640;
            panel_back.Location = new Point(0, 0);
            panel_back.Paint   += panel_back_Paint;
            panel_back.BackgroundImageLayout = ImageLayout.Zoom;
            panel_back.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            this.Controls.Add(panel_back);

            // 盤面のセット
            panel_board                       = new BufferedPanel(false);
            panel_board.Width                 = 480;
            panel_board.Height                = 480;
            panel_board.Location              = new Point(110, 60);
            panel_board.BackColor             = Color.Transparent;
            panel_board.Paint                += panel_board_Paint;
            panel_board.Resize               += panel_Resize;
            panel_board.BackgroundImageLayout = ImageLayout.Zoom;
            panel_board.Anchor                = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            // 盤面背景の子として登録
            panel_back.Controls.Add(panel_board);

            // 盤面のセット
            panel1            = new BufferedPanel(true);
            panel1.Width      = 480;
            panel1.Height     = 480;
            panel1.Location   = new Point(0, 0);
            panel1.BackColor  = Color.Transparent;
            panel1.Paint     += panel1_Paint;
            panel1.MouseDown += panel1_MouseDown;
            panel1.MouseMove += panel1_MouseMove;
            panel1.MouseUp   += panel1_MouseUp;
            panel1.Resize    += panel_Resize;
            panel1.Anchor     = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            // 盤面背景の子として登録
            panel_board.Controls.Add(panel1);

            m_board_width  = panel1.Width - (panel1.Width * border_rate);
            m_board_height = panel1.Height - (panel1.Height * border_rate);


            // 画像とフォントのスケーリング
            resizeObject(panel1);
        }
示例#3
0
 void resizeScreen(BufferedPanel bp)
 {
     if (bp.Width < bp.Height)
     {
         m_board_start_x = 0;
         m_board_start_y = (bp.Height - bp.Width) / 2;
     }
     else
     {
         m_board_start_x = (bp.Width - bp.Height) / 2;
         m_board_start_y = 0;
     }
 }
示例#4
0
        private void panel_board_Paint(object sender, PaintEventArgs e)
        {
            BufferedPanel bp = (BufferedPanel)sender;

            if (bp.Width < bp.Height)
            {
                e.Graphics.DrawImage(m_panel1_bitmap, m_board_start_x, m_board_start_y, bp.Width, bp.Width);
            }
            else
            {
                e.Graphics.DrawImage(m_panel1_bitmap, m_board_start_x, m_board_start_y, bp.Height, bp.Height);
            }
        }
示例#5
0
        // 盤面のリサイズ処理
        void panel_Resize(object sender, EventArgs e)
        {
            BufferedPanel pl = (BufferedPanel)sender;

            if (pl == panel1)
            {
                // 石やフォントのスケーリング処理
                resizeObject(pl);
            }
            else if (pl == panel_board)
            {
                // 盤面のスケーリング
                resizeScreen(pl);
            }
        }
示例#6
0
        void resizeObject(BufferedPanel panel)
        {
            //label5.Text = "x=" + panel.Width + "y=" + panel.Height;
            float board_x, board_y;

            // 縦横の小さい方に合わせる
            if (panel.Width < panel.Height)
            {
                // margin考慮
                board_x     = panel.Width - (panel.Width * border_rate);
                board_y     = panel.Height - (panel.Width * border_rate);
                m_scale     = board_x / (m_board_width + 16);
                m_mass_size = board_x / BoardInfo.BOARD_SIZE;
                m_fix_x     = (float)30.5 * m_scale;
                m_fix_y     = (board_y - board_x) / 2 + ((float)30.5 * m_scale);
            }
            else
            {
                board_x     = panel.Width - (panel.Height * border_rate);
                board_y     = panel.Height - (panel.Height * border_rate);
                m_scale     = board_y / (m_board_height + 16);
                m_mass_size = board_y / BoardInfo.BOARD_SIZE;
                m_fix_x     = (board_x - board_y) / 2 + ((float)30.5 * m_scale);
                m_fix_y     = (float)30.5 * m_scale;
            }

            if (m_scale != 0)
            {
                // 各描画インスタンスの座標をスケーリング
                stone_size_x    = (m_board_width / BoardInfo.BOARD_SIZE) * m_scale;
                stone_size_y    = (m_board_height / BoardInfo.BOARD_SIZE) * m_scale;
                last_move_fix_x = (21 * m_scale) + m_fix_x;
                last_move_fix_y = (21 * m_scale) + m_fix_y;
                canmove_x       = (19 * m_scale) + m_fix_x;
                canmove_y       = (21 * m_scale) + m_fix_y;
                font_scale_x    = (2 * m_scale) + m_fix_x;
                font_scale_y    = (14 * m_scale) + m_fix_y;

                // フォントスケーリング
                m_ft  = new Font("MS UI Gothic", 9 * m_scale);
                m_ft2 = new Font("MS UI Gothic", 8 * m_scale);
                m_ft3 = new Font("Arial", 18 * m_scale, FontStyle.Bold | FontStyle.Italic);
                m_ft4 = new Font("Arial", 15 * m_scale, FontStyle.Bold | FontStyle.Italic);
            }
        }