细述 wxWindows
2008-09-30 13:05:33 来源:WEB开发网bool MyApp::OnInit()
{
wxImage::AddHandler( new wxPNGHandler );
// more ...
}
要使用所有现有的图像格式处理程序,只需要调用函数 wxInitAllImageHandlers() 而不是上面显示的 AddHandler() 方法。
在其它平台上使用应用程序中的工具栏位图时要特别小心。在 Windows 上,您将看到 Windows 位图格式,但 Linux 位图通常是 pixmaps,在这种情况下,就不能完全避免有条件的编译。让我们看一些样本代码。
#if defined(__WXGTK__) || defined(__WXMOTIF__)
#include "maggie.xpm"
#endif
// more ...
void MyApp::UseBitmap()
{
wxBitmap bitmap( wxBITMAP( maggie ));
// more ...
}
理解了吗?所有效果都是由 wxBITMAP() 宏实现的。对于 Windows 和 OS/2,它将使用应用程序资源中名为 'maggie' 的位图来创建 wxBitmap 对象。对于所有其它平台,它将使用称为 'maggie_xpm' 的 pixmap 来创建 wxBitmap 对象。
当可以使用 wxDC::DrawBitmap() 在设备上下文中绘制位图时,必须为图像操作使用 wxImage 对象,如下所示。
图像操作
wxImage* p_image = new wxImage( bitmap );
// Have some fun
if ( p_image->Ok() )
{
if ( p_image->GetHeight() > 50 && p_image->GetWidth() > 50 )
{
unsigned char red = p_image->GetRed( 50, 50 );
unsigned char green = p_image->GetGreen( 50, 50 );
unsigned char blue = p_image->GetBlue( 50, 50 );
// Secure but might be slow
p_image->SetRGB( 50, 50, red, green, blue );
// If you want fast action use a pointer...
unsigned char* data = p_image->GetData();
// Manipulate the data...
}
}
更多精彩
赞助商链接