在 StaticBitmap wxWidgets 上更改图像
Change image on StaticBitmap wxWidgets
我想要一个 window,其中图片根据无限循环中发生的事情而变化。
假设有人四处走动,当他离开给定的轨道时,程序应该显示一个指向轨道方向的箭头。因此我有一个程序可以确定用户和轨道之间的距离,但我不知道如何更新图像。
我将 code::blocks 与 wxWidgets 一起使用,并且认为我必须使用 wxStaticBitmap
class。 (如果有更好的方法,请告诉我。)
我试过:
while(true)
{
updatePosition();
if(userNotOnTrack)
{
if(trackRightOfUser)
{
StaticDirectionBitmap->SetBitmap("D:\WindowsDgps\WindowsDgpsGraphic\arrow_right.png");
}
}
}
(请注意,除了 StaticDirectionBitmap
部分之外,此代码段大部分是伪代码。)
默认情况下,位图有一个 "no_arrow" 图像。有了这个我得到一个错误:error: no matching function for call to 'wxStaticBitmap::SetBitmap(const char [51])'|
。我从文档中看到这行不通,但我不知道什么可以。
如果有人知道如何处理这个,我会很高兴听到。我记得几年前,当我在 C# 中尝试类似的东西并且由于线程安全而完全失败......我希望在带有 wxWidgets 的 C++ 中没有那么难。
SetBitmap 采用 wxBitmap 参数而不是字符串。所以调用应该类似于:
SetBitmap(wxBitmap( "D:\WindowsDgps\WindowsDgpsGraphic\arrow_right.png", wxBITMAP_TYPE_PNG) );
确保在进行此调用之前已使用如下调用之一添加了 png 处理程序:
wxImage::AddHandler(new wxPNGHandler);
或
::wxInitAllImageHandlers();
执行此操作最简单的地方是在应用程序的 OnInit() 方法中。
如果您想从工作线程更新静态位图,您应该抛出一个 wxThreadEvent,然后在事件处理程序中调用 SetBitmap。示例 here 展示了如何生成和处理这些事件。
我想要一个 window,其中图片根据无限循环中发生的事情而变化。
假设有人四处走动,当他离开给定的轨道时,程序应该显示一个指向轨道方向的箭头。因此我有一个程序可以确定用户和轨道之间的距离,但我不知道如何更新图像。
我将 code::blocks 与 wxWidgets 一起使用,并且认为我必须使用 wxStaticBitmap
class。 (如果有更好的方法,请告诉我。)
我试过:
while(true)
{
updatePosition();
if(userNotOnTrack)
{
if(trackRightOfUser)
{
StaticDirectionBitmap->SetBitmap("D:\WindowsDgps\WindowsDgpsGraphic\arrow_right.png");
}
}
}
(请注意,除了 StaticDirectionBitmap
部分之外,此代码段大部分是伪代码。)
默认情况下,位图有一个 "no_arrow" 图像。有了这个我得到一个错误:error: no matching function for call to 'wxStaticBitmap::SetBitmap(const char [51])'|
。我从文档中看到这行不通,但我不知道什么可以。
如果有人知道如何处理这个,我会很高兴听到。我记得几年前,当我在 C# 中尝试类似的东西并且由于线程安全而完全失败......我希望在带有 wxWidgets 的 C++ 中没有那么难。
SetBitmap 采用 wxBitmap 参数而不是字符串。所以调用应该类似于:
SetBitmap(wxBitmap( "D:\WindowsDgps\WindowsDgpsGraphic\arrow_right.png", wxBITMAP_TYPE_PNG) );
确保在进行此调用之前已使用如下调用之一添加了 png 处理程序:
wxImage::AddHandler(new wxPNGHandler);
或
::wxInitAllImageHandlers();
执行此操作最简单的地方是在应用程序的 OnInit() 方法中。
如果您想从工作线程更新静态位图,您应该抛出一个 wxThreadEvent,然后在事件处理程序中调用 SetBitmap。示例 here 展示了如何生成和处理这些事件。