本文整理汇总了C++中Image::Draw方法的典型用法代码示例。如果您正苦于以下问题:C++ Image::Draw方法的具体用法?C++ Image::Draw怎么用?C++ Image::Draw使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Image
的用法示例。
在下文中一共展示了Image::Draw方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Draw
/**\brief Draws the StatusBar
* \param x x-coordinate
* \param y y-coordinate
*
* \bug This can segfault with an empty title.
*/
void StatusBar::Draw(int x, int y) {
int widthRemaining = this->width;
Image *BorderLeft = Image::Get( "Resources/Graphics/hud_bar_left.png" );
Image *BorderMiddle = Image::Get( "Resources/Graphics/hud_bar_middle.png" );
Image *BorderRight= Image::Get( "Resources/Graphics/hud_bar_right.png" );
if(pos==UPPER_RIGHT||pos==LOWER_RIGHT){
x = Video::GetWidth() - BorderLeft->GetWidth() - width - BorderRight->GetWidth();
}
// Draw the Border
BorderLeft->Draw(x,y);
x += BorderLeft->GetWidth();
BorderMiddle->DrawTiled(x,y,width, BorderMiddle->GetHeight());
BorderRight->Draw(x+width,y);
BitType->SetColor(1.f,1.f,1.f,1.f);
// Draw the Title
int wTitle = BitType->RenderTight( x, y+BorderMiddle->GetHalfHeight(), title,Font::LEFT,Font::MIDDLE );
widthRemaining -= wTitle;
x += wTitle + 5;
// Draw Name
if( !name.empty() ) {
int wName = BitType->RenderTight( x, y+BorderMiddle->GetHalfHeight(), GetName() ,Font::LEFT,Font::MIDDLE );
widthRemaining -= wName;
x += wName;
}
// Draw the Bar
if ( (int)(ratio*widthRemaining) > 0 ) {
Image *BarLeft = Image::Get( "Resources/Graphics/hud_hullstr_leftbar.png" );
Image *BarMiddle = Image::Get( "Resources/Graphics/hud_hullstr_bar.png" );
Image *BarRight = Image::Get( "Resources/Graphics/hud_hullstr_rightbar.png" );
int bar_y = y + BorderLeft->GetHalfHeight() - BarLeft->GetHalfHeight();
BarLeft->Draw( x, bar_y );
x += BarLeft->GetWidth();
int bar_w = widthRemaining - BarLeft->GetWidth() - BarRight->GetWidth();
BarMiddle->DrawTiled( x, bar_y,static_cast<int>(bar_w*ratio), BarMiddle->GetHeight() );
BarRight->Draw( x + static_cast<int>(bar_w*ratio), bar_y );
}
}
示例2: Draw
/**\brief Draws the StatusBar
* \param x x-coordinate
* \param y y-coordinate
*
* \bug This can segfault with an empty title.
*/
void StatusBar::Draw(int x, int y) {
int widthRemaining = this->width;
Image *BackgroundLeft = Image::Get( "data/skin/hud_bar_left.png" );
Image *BackgroundMiddle = Image::Get( "data/skin/hud_bar_middle.png" );
Image *BackgroundRight= Image::Get( "data/skin/hud_bar_right.png" );
if(pos == UPPER_RIGHT || pos == LOWER_RIGHT) {
x = Video::GetWidth() - BackgroundLeft->GetWidth() - width - BackgroundRight->GetWidth();
}
// Draw the Border
BackgroundLeft->Draw(x,y);
x += BackgroundLeft->GetWidth();
BackgroundMiddle->DrawTiled(x, y, width, BackgroundMiddle->GetHeight());
BackgroundRight->Draw(x + width, y);
// Draw the Title
int wTitle = font->RenderTight( x, y + BackgroundMiddle->GetHalfHeight(), title, Font::LEFT, Font::MIDDLE );
widthRemaining -= wTitle;
x += wTitle + 5;
// Draw Name
int wName = font->RenderTight( x, y + BackgroundMiddle->GetHalfHeight(), name, Font::LEFT, Font::MIDDLE );
widthRemaining -= wName;
x += wName;
// Draw the Bar
if ( (int)(ratio*widthRemaining) > 0 ) {
Image *BarLeft = Image::Get( "data/skin/hud_hullstr_leftbar.png" );
Image *BarMiddle = Image::Get( "data/skin/hud_hullstr_bar.png" );
Image *BarRight = Image::Get( "data/skin/hud_hullstr_rightbar.png" );
int bar_y = y + BackgroundLeft->GetHalfHeight() - BarLeft->GetHalfHeight();
BarLeft->Draw( x, bar_y );
x += BarLeft->GetWidth();
int bar_w = widthRemaining - BarLeft->GetWidth() - BarRight->GetWidth();
BarMiddle->DrawTiled( x, bar_y,static_cast<int>(bar_w*ratio), BarMiddle->GetHeight() );
BarRight->Draw( x + static_cast<int>(bar_w*ratio), bar_y );
}
}
示例3: Draw
void DataView::Draw(GLfloat x, GLfloat y,GLfloat xscale, GLfloat yscale) {
background->Draw(x,y,xscale,yscale);
uint32_t milliseconds = ((tv.tv_sec*1000) + (tv.tv_usec/1000));
pthread_mutex_lock(&items_mutex);
for(items_t::iterator i=items.begin(); i != items.end();i++) {
i->item->Draw(i->x,i->y,i->xscale,i->yscale);
}
lists[current_list]->Draw(0,0,1,1);
int i = current_list;
boxes[i]->item->Draw(boxes[i]->x,boxes[i]->y,boxes[i]->xscale,boxes[i]->yscale);
if(milliseconds - last_time_update > 5000) {
char temp[128];
time_t t;
t = time(NULL);
strftime(temp,sizeof(temp),"%d.%m.%y, %H:%M",localtime(&t));
time_text->SetText(temp);
}
if(CurrentlyPlaying()) {
//draw awesome animation
GLfloat pos;
Image *chosen = NULL;
//chosen_int = (milliseconds%6000)/1500;
if(milliseconds - last_change > 1500) {
last_change = milliseconds;
chosen_int = lrand48()%3;
}
pos = ((GLfloat)(milliseconds%500UL))/500UL;
float limit = 1;
if(chosen_int == 2) {
limit /= 4;
pos = ((GLfloat)(milliseconds%2000UL))/2000UL;
}
chosen = waves[chosen_int];
chosen->mTexBuffer[0] = pos;
chosen->mTexBuffer[2] = pos;
chosen->mTexBuffer[4] = limit+pos;
chosen->mTexBuffer[6] = limit+pos;
chosen->Draw(not_playing_line->x,0.25,not_playing_line->xscale,not_playing_line->yscale);
}
else {
if(not_playing_line) {
not_playing_line->item->Draw(not_playing_line->x,not_playing_line->y,not_playing_line->xscale,not_playing_line->yscale);
}
}
pthread_mutex_unlock(&items_mutex);
}
示例4: DrawInternal
void MLIFont::DrawInternal(const string &s, Vector2 position, Color color, double scale, RectangleWH clipRect)
{
EnsureUIThread();
// If we're trying to draw an empty string, we can just return -
// we're not gonna draw anything anyhow.
if (s.length() == 0)
{
return;
}
CheckScale();
double x = position.GetX();
double y = position.GetY();
for (string::const_iterator it = s.begin(); it < s.end();)
{
uint32_t c = 0;
if (!GetNextFromStringIterator(it, s.end(), &c))
{
break;
}
Image *pGlyphImage = cache[c];
if (pGlyphImage == NULL)
{
continue;
}
RectangleWH characterClipRect(0, 0, pGlyphImage->width / GetFontScale(), pGlyphImage->height / GetFontScale());
RectangleWH originalCharacterClipRect = characterClipRect;
if (clipRect.GetWidth() < 0 || clipRect.GetX() < originalCharacterClipRect.GetWidth())
{
if (clipRect.GetWidth() >= 0)
{
if (clipRect.GetX() > 0)
{
characterClipRect.SetX(originalCharacterClipRect.GetX() + clipRect.GetX());
characterClipRect.SetWidth(originalCharacterClipRect.GetWidth() - clipRect.GetX());
}
if (clipRect.GetWidth() < characterClipRect.GetWidth())
{
characterClipRect.SetWidth(clipRect.GetWidth());
}
if (clipRect.GetY() > 0)
{
characterClipRect.SetY(min(originalCharacterClipRect.GetY() + clipRect.GetY(), originalCharacterClipRect.GetY() + originalCharacterClipRect.GetHeight()));
characterClipRect.SetHeight(originalCharacterClipRect.GetHeight() - (characterClipRect.GetY() - originalCharacterClipRect.GetY()));
}
if (clipRect.GetHeight() < characterClipRect.GetHeight())
{
characterClipRect.SetHeight(clipRect.GetHeight());
}
}
if (characterClipRect.GetWidth() > 0 && characterClipRect.GetHeight() > 0)
{
characterClipRect.SetHeight(characterClipRect.GetHeight() * GetFontScale());
characterClipRect.SetWidth(characterClipRect.GetWidth() * GetFontScale());
pGlyphImage->Draw(Vector2(x, y), characterClipRect, false, false, scale, scale, color);
}
}
double deltaX = pGlyphImage->width;
if (it < s.end())
{
uint32_t c2 = 0;
if (PeekNextFromStringIterator(it, s.end(), &c2))
{
deltaX = GetKernedWidth(c, c2);
}
}
x += deltaX / GetFontScale();
}
}