C++ 更改静态位图wxWidgets上的图像

C++ 更改静态位图wxWidgets上的图像,c++,image,bitmap,wxwidgets,C++,Image,Bitmap,Wxwidgets,我想有一个窗口,在这个窗口中,图片根据无限循环中发生的事情而变化 想象有人在周围走动,当他离开一个给定的轨迹时,程序应该显示一个指向轨迹方向的箭头。因此,我有一个程序,它可以确定用户和轨迹之间的距离,但我不知道如何更新图像 我在wxWidgets中使用code::blocks,并且认为我必须使用wxStaticBitmap类。(如果有更好的办法,请告诉我。) 我试过: while(true) { updatePosition(); if(userNotOnTrack) {

我想有一个窗口,在这个窗口中,图片根据无限循环中发生的事情而变化

想象有人在周围走动,当他离开一个给定的轨迹时,程序应该显示一个指向轨迹方向的箭头。因此,我有一个程序,它可以确定用户和轨迹之间的距离,但我不知道如何更新图像

我在wxWidgets中使用code::blocks,并且认为我必须使用
wxStaticBitmap
类。(如果有更好的办法,请告诉我。)

我试过:

while(true)
{
    updatePosition();
    if(userNotOnTrack)
    {
        if(trackRightOfUser)
        {
            StaticDirectionBitmap->SetBitmap("D:\\WindowsDgps\\WindowsDgpsGraphic\\arrow_right.png");
        }
    }
}
(请注意,除了
StaticDirectionBitmap
部分之外,此代码段大部分是伪代码。)

默认情况下,位图具有“无箭头”图像。这样我就得到了一个错误:
error:wxStaticBitmap::SetBitmap(constchar[51])调用没有匹配的函数。
。我从文件中看到,这是行不通的,但我不知道什么可以


如果有人知道如何处理这件事,我很乐意听到。我记得几年前,我在C#中尝试了类似的方法,但由于线程安全性,完全失败了。。。我希望C++中的WxWIDGET不是很难。

SETBITMAP将WxBoMMAP参数取为字符串。因此,呼叫应该类似于:

SetBitmap(wxBitmap( "D:\\WindowsDgps\\WindowsDgpsGraphic\\arrow_right.png", wxBITMAP_TYPE_PNG) );
在进行此调用之前,请确保png处理程序已添加以下调用之一:

wxImage::AddHandler(new wxPNGHandler);

最容易做到这一点的地方是在applications OnInit()方法中


如果希望从工作线程更新静态位图,则应引发wxThreadEvent,然后在事件处理程序中调用SetBitmap。此示例显示如何生成和处理这些事件。

SetBitmap采用wxBitmap参数,而不是字符串。因此,呼叫应该类似于:

SetBitmap(wxBitmap( "D:\\WindowsDgps\\WindowsDgpsGraphic\\arrow_right.png", wxBITMAP_TYPE_PNG) );
在进行此调用之前,请确保png处理程序已添加以下调用之一:

wxImage::AddHandler(new wxPNGHandler);

最容易做到这一点的地方是在applications OnInit()方法中

如果希望从工作线程更新静态位图,则应引发wxThreadEvent,然后在事件处理程序中调用SetBitmap。该示例显示了如何生成和处理这些事件