2010-04-05 22 views
6

Làm cách nào tôi có thể đặt GIF động vào hộp thoại trong ứng dụng Win32 gốc của mình?Hình ảnh động trong Win32

Tôi có chỉ báo tải và quá trình tải.

Cảm ơn :-)

Trả lời

5

Bạn có thể sử dụng Animation Control. Bạn sẽ phải chuyển đổi .gif của bạn thành một .avi mặc dù.

+3

Câu hỏi tiếp theo là "Làm thế nào để bạn chuyển đổi một .gif đến một .avi?" Bao gồm điều đó trong câu trả lời của bạn và nó sẽ là hoàn hảo. –

+0

Vì Imagemagick không thành công, tất cả những gì tôi có thể cung cấp là những gì mà google mang lại. (Điều đó không quá tệ - tôi đã tìm kiếm 'convert gif to avi') Có lẽ ai đó có ý tưởng hay không? – Fozi

0

Vì bạn có khung thời gian chặt chẽ trên trang này, tôi đã tìm kiếm ví dụ hoạt động để tạo ảnh động trên win32 và tôi đã tìm thấy một triển khai tốt đẹp trên cplusplus.com.

Được gọi là GIF View [liên kết trực tiếp] của Juan Soulie.

6

Không chắc chắn liệu GDI + có thể được coi là win32 gốc hay không. Trong trường hợp bạn có thể sử dụng nó, hãy kiểm tra ví dụ sau: CodeProject

0

Việc triển khai bộ đếm thời gian để thay đổi nội dung hiển thị là khá đơn giản. Bạn có thể thiết lập một khối văn bản, không có văn bản trong đó, với màu nền và chỉ thay đổi kích thước. Nó sẽ trông giống như một thanh màu mở rộng với chi phí rất thấp.

3

Rất dễ sử dụng GdiPlus để tải nhiều định dạng hình ảnh khác nhau bao gồm jpeg, gif (hoạt ảnh), png v.v.

Mã này chứng tỏ làm thế nào để nhanh chóng tải một khung duy nhất của một hình ảnh vào một HBITMAP: -

#include <gdiplus.h> 
#pragma comment(lib,"gdiplus.lib") 

using namespace Gdiplus; 

HBITMAP LoadImageWithGdiPlus(LPCTSTR pszPngPath) 
{ 
    Image image(pszPngPath); 
    int width = image.GetWidth(); 
    int height = image.GetHeight(); 

    BITMAPINFO bmi; 
    bmi.bmiHeader.biBitCount = 32; 
    bmi.bmiHeader.biClrImportant = 0; 
    bmi.bmiHeader.biClrUsed = 0; 
    bmi.bmiHeader.biCompression = BI_RGB; 
    bmi.bmiHeader.biHeight = height; 
    bmi.bmiHeader.biPlanes = 1; 
    bmi.bmiHeader.biSize = sizeof (bmi.bmiHeader); 
    bmi.bmiHeader.biSizeImage = 0; //calc later 
    bmi.bmiHeader.biWidth = width; 
    bmi.bmiHeader.biXPelsPerMeter = 0; 
    bmi.bmiHeader.biYPelsPerMeter = 0; 
    BYTE* pBmp = NULL; 
    HBITMAP hbm = CreateDIBSection(NULL,&bmi,DIB_RGB_COLORS,(void**)&pBmp,NULL,0); 
    HDC hdc = CreateCompatibleDC(NULL); 
    HGDIOBJ hobj = SelectObject(hdc,hbm); 

    Graphics graphics(hdc); 
    graphics.DrawImage(&image,0,0); 

    SelectObject(hdc,hobj); 
    DeleteDC(hdc); 
    return hbm; 
} 
Các vấn đề liên quan