CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 306

306
Chương 8: Đồ họa, đa phương tiện, và in ấn

Ví dụ sau đây trình bày một bức hình (ở đây là logo của Windows XP) luân phiên lớn lên và
nhỏ lại trên form. Drawing logic được thực hiện trong phương thức thụ lý sự kiện

Form.Paint

,

và một

Timer

được sử dụng để làm mất hiệu lực form mỗi 10 mili-giây để bức hình có thể

được vẽ lại. Người dùng có thể kích hoạt “double buffering” thông qua một

CheckBox

trên

form. Nếu không có “double buffering”, form bị rung đáng kể. Tuy nhiên, khi “double
buffering” được kích hoạt, bức hình lớn lên và nhỏ lại một cách mượt mà, không còn độ rung
nữa.

using System;

using System.Drawing;

using System.Drawing2D;

using System.Windows.Forms;

public class DoubleBuffering : System.Windows.Forms.Form {

private System.Windows.Forms.CheckBox chkUseDoubleBuffering;

private System.Windows.Forms.Timer tmrRefresh;

// (Bỏ qua phần mã designer.)

// Theo dõi kích thước bức hình,

// và kiểu animation (lớn lên hoặc nhỏ lại).

private bool isShrinking = false;

private int imageSize = 0;

// Lưu trữ logo sẽ được vẽ lên form.

private Image image;

private void DoubleBuffering_Load(object sender,

System.EventArgs e) {

// Nạp bức hình logo từ file.

image = Image.FromFile("image.bmp");

// Khởi động Timer để làm mất hiệu lực form.

tmrRefresh.Start();

}

private void tmrRefresh_Tick(object sender, System.EventArgs e) {

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.