Tìm kiếm theo tiêu đề

Tin tức cộng đồng

[MỜI HỢP TÁC] Các kỳ thi Olympic Quốc tế 2026 (IMO - IEO - ISO)

Kính gửi Quý Lãnh đạo, Ban Giám hiệu và Quý Thầy/Cô, FermatTech (Đối tác Google tại VN) phối hợp cùng SCO Ấn Độ trân trọng kính mời tham gia 3 kỳ thi uy tín dành cho HS từ lớp 1 - 12: - IMO: Olympic Toán Quốc tế. - IEO: Olympic Tiếng Anh Quốc tế. - ISO: Olympic Khoa học...
Xem tiếp

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 0919 124 899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

Tạo hiệu ứng tuyết rơi trong C#

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn: congdongcviet.com
Người gửi: Lê Hiến
Ngày gửi: 10h:29' 16-01-2011
Dung lượng: 161.2 KB
Số lượt tải: 154
Số lượt thích: 0 người
Chương trình tạo hiệu ứng tuyết rơi với lập trình C#


Sơ đồ lớp:  Trên đây là các class chính, chức năng của chúng như sau: -SnowFlake: đại diện cho một bông tuyết -FancyText: Chữ nhấp nháy -AppSettings: chứa các thông tin thiết lập của chương trình -HotkeyFilter: sử dụng các WinAPI để đăng kí các hotkey, bạn hãy tham khảo để biết cách sử dụng các API trong C#. Phương thức hoạt động: Chương trình hiển thị các bông tuyết trên 1 form đã bị trong suốt (dùng thuộc tính TransparentKeys của Form), sau đó cho form phủ kín màn hình. Các bông tuyết tạo ra từ những ảnh có sẵn, nếu muốn tự vẽ ra bông tuyết với nhiều kiểu dáng khác nhau bạn có thể tham khảo các thuật toán vẽ hình Fractal có khá nhiều trên mạng. Ưu điểm của dùng ảnh là bạn có thể dễ dàng sử dụng và thay thế bất cứ ảnh nào mình muốn, ví dụ lá cây, giọt nước,… Chương trình dùng 1 timer để tạo ra vòng lặp cho mưa tuyết. Ta bắt đầu tạo ra các bông tuyết với phương thức sau:
Visual C# Code:

///  /// Khởi tạo các giá trị ngẫu nhiên cho bông tuyết  ///  ///  private void CreateSnowFlake(SnowFlake pic)  {  int screenWidth = Screen.PrimaryScreen.WorkingArea.Width;  if (_firstTime)  {  if (rnd.Next(2) == 0)  pic.Image = global::XMas.Properties.Resources.SnowFlake001;  else  pic.Image = global::XMas.Properties.Resources.SnowFlake003;  _firstTime = true;  }  pic.Position = new System.Drawing.Point(rnd.Next(screenWidth), -10);  int size=rnd.Next(40) + 10;  pic.Size = new System.Drawing.Size(size,size);  int sign=rnd.Next(2) == 0 ? -1 : 1;  pic.Direction = rnd.Next(10)*sign;  pic.Speed = rnd.Next(20) + 3;  }
Cờ _firstTime để việc gán Image cho bông tuyết chỉ xảy ra ở lần đầu tiên, các lần sau nó sẽ bỏ qua, tuy nhiên có thể bỏ đi cờ này cũng không ảnh hưởng lắm đến tốc độ chương trình. Sự kiện Tick của Timer để điều khiển quá trình tuyết rơi:
Visual C# Code:
private void timer1_Tick(object sender, EventArgs e)  {  Graphics g = this.CreateGraphics();  int screenHeight = Screen.PrimaryScreen.Bounds.Height;  int screenWidth= Screen.PrimaryScreen.WorkingArea.Width;  //g.Clear(this.BackColor);  for(int i=0;i screenHeight || pics[i].Right<0 || pics[i].Left >screenWidth)  {  CreateSnowFlake(pics[i]);  continue;  }  // Cập nhật vị trí mới cho bông tuyết  int x = pics[i].Position.X;  int y = pics[i].Position.Y;  x = x + pics[i].Direction + settings.Wind;  y = y + pics[i].Speed;  pics[i].Position= new Point(x, y);  // Vẽ bông tuyết lên form  g.DrawImage(pics[i].Image, pics[i].Bounds);  }  // Vẽ dòng chữ nhấy nháy  g.DrawImageUnscaled(_bmpText,settings.TextLocation);  }
Vậy là đã xong các bước cơ bản để tạo ra chương trình này, các chức năng khác bạn có thể tự tìm hiểu và chỉnh sửa lại theo ý muốn. Chúc các bạn một mùa Noel an lành, hạnh phúc. Download: - Chương trình (83KB) - Mã nguồn (507KB)





Visual C# Code:
this.SetStyle(   ControlStyles.AllPaintingInWmPaint |   ControlStyles.UserPaint |   ControlStyles.DoubleBuffer,true);


 
Gửi ý kiến

↓ CHÚ Ý: Bài giảng này được nén lại dưới dạng RAR và có thể chứa nhiều file. Hệ thống chỉ hiển thị 1 file trong số đó, đề nghị các thầy cô KIỂM TRA KỸ TRƯỚC KHI NHẬN XÉT  ↓