Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Cho PictureBox chuyển động trong Form như thế nào ?

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    4

    Cool Cho PictureBox chuyển động trong Form như thế nào ?

    Các bác giúp với
    Vấn đề em như sau: em mò được cách di chuyển 1 picbox trên form như file đính kèm.... nhưng cái này chỉ là di chuyển được 1 quãng ngắn bằng keydown event... nhưng em muốn khi nhấn 1 phím di chuyển thì cái pic này sẽ chạy theo hướng up down left right ko ngừng.... hay là nó sẽ ngừng khi gặp 1 vật cản là 1 cái picbox khác hoặc là đụng vào màn hình.......

    Đây là file đính kèm : http://www.mediafire.com/?0h1306hwdpoeffe

    Giúp dùm! thanks trước"

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    An Giang
    Bài viết
    502

    trong sự kiện Tick của Timer bạn chỉ cần Set Location của PictureBox là được.

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    4

    bạn ví dụ lại dùm mình đi bạn, tại mình chưa hiểu cách vận dụng này, với lại mình còn set cho nó dừng lại khi gặp 1 vật cản đường nữa, nếu có thể bạn code cho mình xem cái khúc đó.... ví dụ cho nó đụng 1 cạnh form là được, làm sao cho nó chạy có cảm giác là như thật

  4. #4
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Theo Four thì bạn thử làm thế này coi:
    +Kéo vào form 1 cái timer(enable=false)
    +Khi kích vào fim nào đó thì trong sự kiện keypress,... bạn cho timerTest.Enable=true;
    +Trong sự kiện tick của timer bạn cho cái picture di chuyển. Khi muốn kiếm tra nó có gặp vật cản hay không thì chỉ cần xét tọa độ X,Y là được. Chẳng hạn:
    pictureBoxTest.Location.X=0 => nó chạm mép trái của Form
    pictureBoxTest.Location.X+pictureBoxTest.width=thi s.Width =>chạm vào cạnh bển phải...
    còn khi chạm muốn làm gì thì tùy bạn.he
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  5. #5
    Ngày gia nhập
    02 2010
    Bài viết
    73

    không cần phải dùng Timer đâu, timer chỉ dùng khi bạn muốn nhân vật của mình tự động di chuyển thôi
    Tôi có viết lại cho bạn dùng GDI+

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Text;
    7. using System.Windows.Forms;
    8. using System.Drawing.Drawing2D;
    9. using System.Threading;
    10.  
    11. namespace WindowsApplication2
    12. {
    13.     public partial class Form1 : Form
    14.     {
    15.         Image _imgImages1;
    16.         Point _pPosition1; // Tọa độ của hình đầu người
    17.         Rectangle _rctImages1Src;
    18.         int _iDistanceFoot;
    19.         System.Windows.Forms.Timer _tmTime;
    20.         public Form1()
    21.         {
    22.             InitializeComponent();
    23.         }
    24.  
    25.         private void Form1_Load(object sender, EventArgs e)
    26.         {
    27.             _imgImages1 = Properties.Resources.images;
    28.             _pPosition1 = new Point(ClientRectangle.Width/2, ClientRectangle.Height/2);
    29.             _rctImages1Src = new Rectangle(0, 0, _imgImages1.Width, _imgImages1.Height);
    30.             _iDistanceFoot = 3;
    31.  
    32.         }
    33.  
    34.         private void Form1_Paint(object sender, PaintEventArgs e)
    35.         {
    36.             Graphics _grfx = e.Graphics;
    37.             _grfx.DrawImage(_imgImages1, new Rectangle(_pPosition1.X, _pPosition1.Y, _imgImages1.Width/5 , _imgImages1.Height/5 ), _rctImages1Src, GraphicsUnit.Pixel);
    38.         }
    39.  
    40.         private void Form1_KeyDown(object sender, KeyEventArgs e)
    41.         {
    42.             if (e.KeyCode == Keys.Up)
    43.             {
    44.                 _pPosition1.Y -= _iDistanceFoot;
    45.             }
    46.  
    47.             if (e.KeyCode == Keys.Down)
    48.             {
    49.                 _pPosition1.Y += _iDistanceFoot;
    50.             }
    51.  
    52.             if (e.KeyCode == Keys.Left)
    53.             {
    54.                 _pPosition1.X -= _iDistanceFoot;
    55.             }
    56.  
    57.             if (e.KeyCode == Keys.Right)
    58.             {
    59.                 _pPosition1.X += _iDistanceFoot;
    60.             }
    61.  
    62.             // kiểm tra biên
    63.             if ((_pPosition1.X + _imgImages1.Width/5) > this.ClientRectangle.Width+ _iDistanceFoot)
    64.             {
    65.                 MessageBox.Show("Đụng cạnh phải !", "Warning");
    66.                 _pPosition1.X = (this.ClientRectangle.Width - _imgImages1.Width/5);
    67.             }
    68.  
    69.             if ((_pPosition1.Y +_imgImages1.Height/5) > this.ClientRectangle.Height +_iDistanceFoot)
    70.             {
    71.                 MessageBox.Show("Đụng cạnh phải !", "Warning");
    72.                 _pPosition1.Y = (this.ClientRectangle.Height - _imgImages1.Height/5);
    73.             }
    74.             if (_pPosition1.X < -_iDistanceFoot)
    75.             {
    76.                 MessageBox.Show("Đụng cạnh trái !", "Warning");
    77.                 _pPosition1.X = 0;
    78.             }
    79.             if (_pPosition1.Y  < -_iDistanceFoot)
    80.             {
    81.                 MessageBox.Show("Đụng cạnh trên !", "Warning");
    82.                 _pPosition1.Y = 0;
    83.             }
    84.  
    85.             Invalidate();        
    86.            
    87.         }
    88.     }
    89. }

    bạn sẽ vẽ con này ra màn hình ( cái new rectangle trong drawpicture) dựa trên vị trí của nó ( _pPosition) hàm keyevent của bạn sẽ tính lại vị trí của Images khi bạn nhập key( nếu hợp lí thì sẽ yêu cầu vẽ lại), và nó sẽ kiểm tra vị trí của image xem có va chạm với màn hình không, nếu co cho thông báo.

    Chướng ngại vật thì bạn phải tự làm lấy thôi, nó cũng giống cái kiểm tra biên nhưng thay vì kiểm tra với các cạnh màn hình nó sẽ kiểm tra với các cạnh chướng ngại.

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    4

    Mặc định Cho PictureBox chuyển động trong Form như thế nào ?

    À mình làm được rồi... cảm ơn bạn

Các đề tài tương tự

  1. Form load Picturebox+Label tự động trong C#?
    Gửi bởi duongtrongvinh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 18-07-2014, 02:21 PM
  2. Chuyển đổi file JFrame Form thành file java class trong netbeans như thế nào???
    Gửi bởi quanganhpd93 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 02-03-2013, 08:47 AM
  3. MousePosition trong pictureBox và Form
    Gửi bởi lequ0ch0anglt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 14-11-2011, 05:55 PM
  4. DateTimePicker chuyển thành dạng thời gian trong C# Window form như thế nào?
    Gửi bởi bimbim1989 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 12-08-2010, 06:34 AM
  5. Phát sinh và dịch chuyển picturebox trong C#
    Gửi bởi blacklion198 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 31-03-2009, 12:52 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn