在静态位图wxWidgets上更改图像
Change image on StaticBitmap wxWidgets
我想有一个窗口,其中的图片变化取决于在无限循环期间发生的事情。
想象某人四处走动,当他离开给定的轨道时,程序应该显示一个指向轨道方向的箭头。所以我有一个程序,确定用户和轨道之间的距离,但是我不知道如何更新图像。
我使用代码::块与wxWidgets,并认为我必须使用wxStaticBitmap
类。(如果有更好的方法,请告诉我。)
I tried with:
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#中尝试类似的东西时,因为线程安全完全失败了……我希望在c++中使用wxWidgets不会这么难。
SetBitmap接受wxBitmap参数,而不是字符串。所以调用应该看起来像这样:
SetBitmap(wxBitmap( "D:\WindowsDgps\WindowsDgpsGraphic\arrow_right.png", wxBITMAP_TYPE_PNG) );
请确保在进行此调用之前,png处理程序已经添加了如下调用之一:
wxImage::AddHandler(new wxPNGHandler);
或
::wxInitAllImageHandlers();
最简单的地方是在应用程序的OnInit()方法。
如果你想从工作线程更新静态位图,你应该抛出一个wxThreadEvent,然后在事件处理程序中调用SetBitmap。下面的示例展示了如何生成和处理这些事件。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- wxWidgets 在编译时包含图像
- WXWIDGETS应用于WXStaticBitMap时,屏幕截图将大部分图像留为空白
- 在WXWIDGETS中添加图像
- 如何通过 c++ 在 wxWidgets 中显示来自互联网的图像
- wxWidgets面板的背景图像闪烁
- wxWidgets:定期在wxFrame中重新绘制图像
- 在静态位图wxWidgets上更改图像
- WxWidgets中的缓冲图像
- 在opencv和wxwidgets之间转换图像
- 使用wxWidgets在内存中绘制8位灰度图像缓冲区到屏幕