- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [SOFTWARE] Giới thiệu bộ phần mềm tính Kết Cấu Thép HatteSale, Mộng Đơn, Dầm, Sàn, Móng Cọc, Vách, Xà Gồ, Tính Tải Trọng
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
- Hướng dẫn khóa file bằng nhiều process id, không cho xóa tập tin
- Hướng dẫn cách tạo Product Id cho ứng dụng phần mềm XXXXX-XXXXX-XXXXX-XXXXX
- [SQLSERVER] Hướng dẫn tạo script sql từ ứng dụng Sqlserver management Studio
- [C#] Hướng dẫn sử dụng thư viện AutoITx lấy id và password Ultraviewer trên winform
- [VB.NET] Hướng dẫn lấy thông tin tài khoản đăng nhập windows và khởi động lại ứng dụng ở chế độ Administrator
- [C#] Sử dụng thư viện Polly gửi lại request api khi request bị lỗi hay rớt mạng
- [DEVEXPRESS] Chia sẻ source code tạo báo cáo report in tem nhãn label trên C# winform
- [DEVEXPRESS] Hướng dẫn vẽ biểu đồ Bar Chart trên Winform
- [C#] Tạo form đăng nhập và đăng ký với hiệu ứng Sliding Animation Effect
- [C#] Hướng dẫn tạo thanh toán đơn hàng qua mã vạch VietQR sử dụng API PayOS hoàn toàn miễn phí
- [C#] Hướng dẫn ghi log ra RichTextBox giống Console trên Winform sử dụng thư viện Serilog
- [C#] Hướng dẫn cách tạo mã QR Code trên file Excel
[C#] Chia sẻ source code Orange Rain in Winform
Xin chào các bạn, bài viết hôm nay mình chia sẻ các bạn source code tạo Orange Rain trên Background Winform C#, các bạn có thể tìm thêm hiệu ứng tuyết rơi ở bài đọc cũ.
[C#] Source code Orange Rain in winform
Giao diện demo ứng dụng:
Ở bài viết này, chúng ta sẻ sử dụng 1 timer, các bạn có thể chỉnh tốc độ rơi và chiều dài của Rain.
Source code c#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PurpleRain
{
public partial class Form1 : Form
{
List<Drop> rain = new List<Drop>(); // keeps all drops in one place
Random rnd = new Random(); // for generating random numbers
public Form1()
{
InitializeComponent();
for (int i = 0; i < 100; i++) // creates 100 drops at random position and with random speed
rain.Add(CreateRandomDrop());
}
private Drop CreateRandomDrop()
{
return new Drop // create drop with random position and speed
{
Position = new PointF(rnd.Next(this.Width), rnd.Next(this.Height)),
YSpeed = (float)rnd.NextDouble() * 3 + 5 // 2..5
};
}
private void UpdateRain() // changes Y position for each drop (falling), also checks if a drop is outside Main form, if yes, resets position to 0
{
foreach (var drop in rain)
{
drop.Fall();
if (drop.Position.Y > this.Height)
drop.Position.Y = 0;
}
}
private void RenderRain()
{
using (var grp = this.CreateGraphics()) // using will call IDisposable.Dispose
{
grp.Clear(Color.DarkOrange);
foreach (var drop in rain)
grp.DrawLine(Pens.White, drop.Position, new PointF(drop.Position.X , drop.Position.Y + 5));
}
}
private void timer1_Tick(object sender, EventArgs e)
{
UpdateRain();
RenderRain();
}
class Drop
{
public PointF Position;
public float YSpeed;
public void Fall() => Position.Y += YSpeed;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Thanks for watching!