Hướng dẫn thực hành Lập trình C trên Windows

Nếu thực hiện nhiều thao tác vẽ trực tiếp trên device context của màn hình thì sẽ bị tình trạng màn hình bị “giật”. Khi sử dụng kỹ thuật MemDC có thể hạn chế được hiện tượng “giật” màn hình: Trước tiên cần tạo ra 1 device context ảo trong bộ nhớ tương thích với device context thật sự cần xử lý. | Hướng dẫn thực hành Lập trình C trên Windows SỬ DỤNG KỸ THUẬT DEVICE CONTEXT ẢO 1 Mục đích Sử dụng kỹ thuật MemDC. Thao tác trên ảnh bitmap. 2 Kỹ thuật MemDC Ý tưởng chính: Nếu thực hiện nhiều thao tác vẽ trực tiếp trên device context của màn hình thì sẽ bị tình trạng màn hình bị “giật”. Khi sử dụng kỹ thuật MemDC có thể hạn chế được hiện tượng “giật” màn hình: Trước tiên cần tạo ra 1 device context ảo trong bộ nhớ tương thích với device context thật sự cần xử lý. Sau đó, tất cả mọi thao tác vẽ sẽ được thực hiện trên dc ảo này thay vì thực hiện trực tiếp trên dc thật. Cuối cùng chép nội dung của dc ảo vào dc thật. Xem như chỉ thao tác trực tiếp trên device context thật. Khai báo biến Khai báo bổ sung biến thành phần trong lớp CxxxView (trong file ): CDC m_MemDC; CBitmap m_MemBitmap, *m_pOldBitmap; Các hàm xử lý Tạo MemDC Cần phải tạo ra memdc trước khi sử dụng. Tạo hàm OnCreate ứng với sự kiện WM_CREATE của lớp CxxxView int CxxxView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here // Lấy dc của màn hình CClientDC dc(this); // Lấy kích thước màn hình. int MaxX = ::GetSystemMetrics(SM_CXSCREEN); int MaxY = ::GetSystemMetrics(SM_CYSCREEN); // Tạo ra m_MemDC tương thích với dc của màn hình (&dc); 1 Hướng dẫn thực hành Lập trình C trên Windows // Tạo ra 1 đối tượng CBitmap (kích thước MaxX × MaxY) // tương thích với dc màn hình (&dc, MaxX, MaxY); // Đưa đối tượng bitmap m_MemBitmap vào m_MemDC m_pOldBitmap = (&m_MemBitmap); return 0; } Hủy MemDC Cần hủy MemDC sau khi sử dụng xong. Trong hàm destructor của lớp CxxxView, bổ sung các hàm hủy đối tượng MemDC và MemBitmap CxxxView::~CxxxView() { (); (); (); } Sử dụng MemDC Có thể viết code trong hàm OnDraw để sử dụng MemDC như sau : void .

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
15    22    4    30-11-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.