- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [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
- [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
[C#] Hướng dẫn sử dụng Sprite Image hiển thị hình Gif Sticker Zalo
Xin chào các bạn bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng kỷ thuật Sprite Image C#, để hiển thị hình ảnh Sticker Zalo trên Winform.
[C#] Hướng dẫn sử dụng Sprite Image hiển thị ảnh Sticker Zalo
Sprite image là gì?
Image Sprites là cách gộp nhiều ảnh nền cần sử dụng vào một file hình duy nhất và sử dụng thuộc tính background-position trong CSS với 2 vị trí Left, Top để xác định vị trí thành phần ảnh cần làm nền, nhằm giảm tải Request (yêu cầu) đến Server, và giảm dung lượng file hình, tăng tốc độ tải trang, tiết kiệm tài nguyên hệ thống.
Kỹ thuật này thường được sử dụng trên web để tăng tốc độ tải trang, và sử dụng CSS để hiển thị, hình ảnh theo position x, y mà mình mong muốn.
Ví dụ: mình có hình mẫu sprite sticker của zalo như hình bên dưới:
Hoặc hình dưới đây:
Và bây giờ, mình sẽ viết một hàm Split()
để cắt 1 hình ảnh này thành nhiều hình ảnh và bỏ vào trong ImageList C#.
Sau đó, chúng ta sẽ sử dụng một Timer()
để thay đổi các hình lên pictureBox thì chúng ta sẽ có được hành động.
Tốc độ nhanh chậm của chuyển động, mình sẽ sử dụng công cụ Trackbar
để change delay giữa các hình ảnh qua Interval
của Timer.
Dưới đây là giao diện demo ứng dụng Sprite Image C#:
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 SpriteImage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private ImageList Split(Bitmap image, int width, int height)
{
ImageList rows = new ImageList();
rows.ImageSize = new Size(width, height);
rows.Images.AddStrip(image);
ImageList cells = new ImageList();
cells.ImageSize = new Size(width, height);
foreach (Image row in rows.Images)
{
cells.Images.AddStrip(row);
}
return cells;
}
ImageList ListImage;
int count = 0;
int i = 0;
private void btn_sprite_Click(object sender, EventArgs e)
{
timer1.Stop();
i = 0;
var dlg = new OpenFileDialog();
if(dlg.ShowDialog() == DialogResult.OK)
{
var img = (Bitmap)Image.FromFile(dlg.FileName);
ListImage = Split(img, 130, 130);
count = ListImage.Images.Count;
timer1.Enabled = true;
timer1.Start();
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Image = ListImage.Images[i];
i++;
if (i == count) { i = 0; }
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
timer1.Interval = trackBar1.Value;
}
private void Form1_Load(object sender, EventArgs e)
{
trackBar1.Value = timer1.Interval;
}
}
}
Thanks for watching!