Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Không thể thay đổi nội dung của giao diện trong winform application.

    Xin chào mọi người, mình có một ma trận 5x5 như thế này



    Và mình đã tạo gui cho nó với tableLayoutPanel như thế này



    Số 0 là ô màu đen
    Số 1 là ô màu trắng
    Số 2 là ô màu xanh
    Số 3 là ô màu đỏ.

    Sau khi chạy chương trình mình đã ra được kết quả và hiển thị ra console như thế này



    Mình muốn tạo GUI cho nó , kiểu như vị trí trong ma trận thay đổi thì box sẽ như di chuyển với GUI với 1 khoảng thời gian xác định, như sau mỗi 10s Form sẽ load lại nội dung 1 lần. Làm thế nào để thực hiện được điều đó? Xin cảm ơn

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình sẽ giúp bạn
    Code như sau, đầu tiên thêm 1 picturebox vào form, ta sẽ vẽ game trên picturebox này

    Mã:
    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; namespace GiaoDienGameGiongTroDayHop{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            TrangThai = new int[4, 4] { { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 1, 2, 1, 1 }, { 1, 1, 1, 3 } };            TaoGameMoi(pictureBox1, 40, TrangThai); //tao game moi voi kich thuoc canh va mang trang thai        }        private int DoDaiCanhO; //do dai canh moi o vuong        private int[,] TrangThai; //mang 2 chieu luu trang thai cua tro choi        private void pictureBox1_Paint(object sender, PaintEventArgs e)        {            Graphics g = e.Graphics;            VeBang(g,TrangThai);        }        public void TaoGameMoi(PictureBox pb,int tsDoDaiCanhO,int[,] tsTrangThai)        {            DoDaiCanhO = tsDoDaiCanhO;            TrangThai = tsTrangThai;            pb.Width = DoDaiCanhO * TrangThai.GetLength(1);            pb.Height = DoDaiCanhO * TrangThai.GetLength(0);            pb.Visible = true;        }        private void VeBang(Graphics g,int[,] tsTrangThai)        {            Color bMau=new Color () ;            for (int i = 0; i < tsTrangThai.GetLength(0); i++)            {                for (int j = 0; j < tsTrangThai.GetLength(1); j++)                {                    switch (tsTrangThai[i, j])                    {                        case 0:                            bMau = Color.Black;                            break;                        case 1:                            bMau = Color.White;                            break;                        case 2:                            bMau = Color.Blue;                            break;                        case 3:                            bMau = Color.Red;                            break;                    }                    g.FillRectangle(new SolidBrush(bMau),new Rectangle(j*DoDaiCanhO,i*DoDaiCanhO,DoDaiCanhO,DoDaiCanhO ));                }            }        }    }}
    sau đó thêm 1 timer, trong sự kiện timer timer bạn cập nhật mảng TrangThai theo ý bạn và sau đó gọi

    Mã:
    pictureBox1.Invalidate();

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cảm ơn bác nhiều. Đăng kết quả lên đây để ai có cùng thắc mắc thì có thể tham khảo [IMG]images/smilies/smile.png[/IMG]

    Mã:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace GiaoDienGameGiongTroDayHop
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                TrangThai = new int[4, 4] { { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 1, 2, 1, 1 }, { 1, 1, 1, 3 } };
                ketQua1 = new int[4, 4] {   { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 1, 1, 2, 1 }, { 1, 1, 1, 3 } };
                ketQua2 = new int[4, 4] {   { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 1, 1, 1, 2 }, { 1, 1, 1, 3 } };
                TaoGameMoi(pictureBox1, 40, TrangThai); //tao game moi voi kich thuoc canh va mang trang thai
                listTrangThai = new List<int[,]>();
                listTrangThai.Add(TrangThai);
                listTrangThai.Add(ketQua1);
                listTrangThai.Add(ketQua2);
            }
            private int DoDaiCanhO; //do dai canh moi o vuong
            private int[,] TrangThai; //mang 2 chieu luu trang thai cua tro choi
            private List<int[,]> listTrangThai; // danh sach mang 2 chieu luu lai ket qua cua tro choi
    
            private int[,] ketQua1;
            private int[,] ketQua2;
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                Graphics g = e.Graphics;
                VeBang(g, TrangThai);
            }
            public void TaoGameMoi(PictureBox pb, int tsDoDaiCanhO, int[,] tsTrangThai)
            {
                DoDaiCanhO = tsDoDaiCanhO;
                TrangThai = tsTrangThai;
                pb.Width = DoDaiCanhO * TrangThai.GetLength(1);
                pb.Height = DoDaiCanhO * TrangThai.GetLength(0);
                pb.Visible = true;
    
                timer1.Start();
                timer1.Enabled = true;
            }
            private void VeBang(Graphics g, int[,] tsTrangThai)
            {
                Color bMau = new Color();
                for (int i = 0; i < tsTrangThai.GetLength(0); i++)
                {
                    for (int j = 0; j < tsTrangThai.GetLength(1); j++)
                    {
                        switch (tsTrangThai[i, j])
                        {
                            case 0:
                                bMau = Color.Black;
                                break;
                            case 1:
                                bMau = Color.White;
                                break;
                            case 2:
                                bMau = Color.Blue;
                                break;
                            case 3:
                                bMau = Color.Red;
                                break;
                        }
                        g.FillRectangle(new SolidBrush(bMau), new Rectangle(j * DoDaiCanhO, i * DoDaiCanhO, DoDaiCanhO, DoDaiCanhO));
                    }
                }
            }
            int k = 1;
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (k < listTrangThai.Count)
                {
                    TrangThai = listTrangThai[k];
                    pictureBox1.Invalidate();
                    k++;     
                }
                else
                {
                    timer1.Stop();
                }
            }
        }
    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •