Intro :
Parfois nous avons besoin d’afficher une image pour rendre l’interface utilisateur (GUI) plus jolie.
Prérequis :
– Avoir lu la classe GUIWidget
Contenu :
Voici le fichier GUIImage.h :
#ifndef GUI_IMAGE_H
#define GUI_IMAGE_H
#include "GUIWidget.h"
class GUIImage : public GUIWidget
{
public:
GUIImage(const std::string& sName, const std::string& sTextureFileName);
virtual ~GUIImage();
virtual void SetTextureImage(const std::string& sTextureName);
virtual void Update(float fTimeSinceLastFrame);
virtual void SetPosition(unsigned int x, unsigned int y);
virtual void SetSize(unsigned int iWidth, unsigned int iHeight);
virtual void SetVisible(bool bVisible);
Sprite2D* GetImage();
private:
Sprite2D* m_pImage;
};
#endif
Voici le fichier GUIImage.cpp :
#include "GUIImage.h"
#include "Sprite2D.h"
#include "Defines.h"
GUIImage::GUIImage(const std::string& sName, const std::string& sTextureFileName) :
GUIWidget(sName),
m_pImage(nullptr)
{
m_pImage = new Sprite2D(sTextureFileName);
m_pImage->Initialize();
unsigned int iImageWidth = m_pImage->GetWidth();
unsigned int iImageHeight = m_pImage->GetHeight();
SetSize(iImageWidth, iImageHeight);
}
GUIImage::~GUIImage()
{
SAFE_DELETE(m_pImage);
}
void GUIImage::Update(float fTimeSinceLastFrame)
{
if (IsVisible())
{
m_pImage->Render();
}
GUIWidget::Update(fTimeSinceLastFrame);
}
void GUIImage::SetTextureImage(const std::string& sTextureName)
{
m_pImage->SetTextureImage(sTextureName);
// On restaure les dimensions d'avant
unsigned int iWidth = 0;
unsigned int iHeight = 0;
GetSize(iWidth, iHeight);
m_pImage->SetImageSize(iWidth, iHeight);
}
void GUIImage::SetPosition(unsigned int x, unsigned int y)
{
m_pImage->SetPosition(x, y);
GUIWidget::SetPosition(x, y);
}
void GUIImage::SetSize(unsigned int iWidth, unsigned int iHeight)
{
m_pImage->SetImageSize(iWidth, iHeight);
GUIWidget::SetSize(iWidth, iHeight);
}
void GUIImage::SetVisible(bool bVisible)
{
if (bVisible)
{
m_pImage->Show();
}
else
{
m_pImage->Hide();
}
GUIWidget::SetVisible(bVisible);
}
Sprite2D* GUIImage::GetImage()
{
return m_pImage;
}
Résumé :

