Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Picturebox di chuyển theo đường khi nhập tọa độ
02:34 26-04-2018
844 lượt xem
3 bình luận
20:04 26-04-2018
Xin chào moi người, em có một picturebox, khi e nhập tọa độ (x,y) vào textbox thì tọa độ của nó thay đổi theo giá trị e nhập vào. Ở đây e dùng thuộc tính location, thì picturebox nó nhảy lập tức tới tọa độ e nhập luôn, giờ e muốn giả như e nhập (8,9) thì picturebox nó sẽ di chuyển theo x 8 đơn vị, rồi di chuyển theo y 9 đơn vị (hoặc ngược lại) thì phải làm sao ạ. Em cảm ơn.w
Vẫn đề 1: Thread
Bạn nhớ anh Long dạy là khi 1 thread đang tính toán thì sẽ gây ra blocking (Xem thêm bài Thread trong C# Winfrom Application hay Async Programming - Cái này là ông làm ở .NET nói nếu bạn học giỏi Tiếng Anh thì nghe, cặn cẽ lắm) khi blocking thì cái thread bạn đang dùng sẽ không handle UI đến khi cái code chạy xong như vậy cần 1 thread khác handle code của bạn
Thread là gì
Tạo thread có 3 cách 2 cách là kiểu bthg cách còn lại là Winform Application hỗ trợ sẵn
2 cách đầu sẽ ra lỗi (Excception) vì 2 thread không đc dành resource của nhau. Để trảnh lỗi này thì dùng: Đọc thêm ở đây
Cái này không khuyến khích sử dụng, và lên C# WPF thì nó cũng bị bỏ đi nên để cho code mạnh thì dùng .Invoke(). Cái này thì mình chịu vì lười, nhưng lên WPF thì có 1 Method như sau:
Vẫn đề 2: Animation,
Vì lúc đấy cái vị trí bạn đặt cho picturebox là ở đó lun (Mình cho rằng bạn cho code vào thread hoặc binding) nếu bạn muốn cho nó có animation thì phải cho nó dịnh 1 ít một rồi cho thread nghỉ 1 - 50 milisecond
Note
Chúc bạn thành công nha mà bonus cho bạn thêm là trong C# WPF có cái storyboard và DoubleAnimation tiện lắm, nó tự animation cho mình luôn.
Ví dụ nè
Cái này hồi trước mình làm Java phải dùng đa tiến trình, nó thực hiện như phim hoạt hình hay game á. Bạn xem C# làm đa tiến trình được không
Cho vòng lặp for cho nó dịch chuyển 8,9 đơn vị theo giá trị bạn truyền vào, mỗi lần tăng lên 1 đơn vị :D . tức phải xét location(xét point của nó liên tục)