本文整理汇总了C++中Bitmap::FlipBlt方法的典型用法代码示例。如果您正苦于以下问题:C++ Bitmap::FlipBlt方法的具体用法?C++ Bitmap::FlipBlt怎么用?C++ Bitmap::FlipBlt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bitmap
的用法示例。
在下文中一共展示了Bitmap::FlipBlt方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DynamicSprite_Flip
void DynamicSprite_Flip(ScriptDynamicSprite *sds, int direction) {
if ((direction < 1) || (direction > 3))
quit("!DynamicSprite.Flip: invalid direction");
if (sds->slot == 0)
quit("!DynamicSprite.Flip: sprite has been deleted");
// resize the sprite to the requested size
Bitmap *newPic = BitmapHelper::CreateTransparentBitmap(spritewidth[sds->slot], spriteheight[sds->slot], spriteset[sds->slot]->GetColorDepth());
if (direction == 1)
newPic->FlipBlt(spriteset[sds->slot], 0, 0, Common::kBitmap_HFlip);
else if (direction == 2)
newPic->FlipBlt(spriteset[sds->slot], 0, 0, Common::kBitmap_VFlip);
else if (direction == 3)
newPic->FlipBlt(spriteset[sds->slot], 0, 0, Common::kBitmap_HVFlip);
delete spriteset[sds->slot];
// replace the bitmap in the sprite set
add_dynamic_sprite(sds->slot, newPic, (game.spriteflags[sds->slot] & SPF_ALPHACHANNEL) != 0);
}
示例2: Draw
void InventoryScreen::Draw(Bitmap *ds)
{
color_t draw_color = ds->GetCompatibleColor(play.sierra_inv_color);
ds->FillRect(Rect(0,0,windowwid,windowhit), draw_color);
draw_color = ds->GetCompatibleColor(0);
ds->FillRect(Rect(barxp,bartop, windowwid - 2,buttonyp-1), draw_color);
for (int i = top_item; i < numitems; ++i) {
if (i >= top_item + num_visible_items)
break;
Bitmap *spof=spriteset[dii[i].sprnum];
wputblock(ds, barxp+1+((i-top_item)%4)*widest+widest/2-spof->GetWidth()/2,
bartop+1+((i-top_item)/4)*highest+highest/2-spof->GetHeight()/2,spof,1);
}
#define BUTTONWID Math::Max(1, game.SpriteInfos[btn_select_sprite].Width)
// Draw select, look and OK buttons
wputblock(ds, 2, buttonyp + 2, spriteset[btn_look_sprite], 1);
wputblock(ds, 3+BUTTONWID, buttonyp + 2, spriteset[btn_select_sprite], 1);
wputblock(ds, 4+BUTTONWID*2, buttonyp + 2, spriteset[btn_ok_sprite], 1);
// Draw Up and Down buttons if required
Bitmap *arrowblock = BitmapHelper::CreateTransparentBitmap (ARROWBUTTONWID, ARROWBUTTONWID);
draw_color = arrowblock->GetCompatibleColor(0);
if (play.sierra_inv_color == 0)
draw_color = ds->GetCompatibleColor(14);
arrowblock->DrawLine(Line(ARROWBUTTONWID/2, 2, ARROWBUTTONWID-2, 9), draw_color);
arrowblock->DrawLine(Line(ARROWBUTTONWID/2, 2, 2, 9), draw_color);
arrowblock->DrawLine(Line(2, 9, ARROWBUTTONWID-2, 9), draw_color);
arrowblock->FloodFill(ARROWBUTTONWID/2, 4, draw_color);
if (top_item > 0)
wputblock(ds, windowwid-ARROWBUTTONWID, buttonyp + 2, arrowblock, 1);
if (top_item + num_visible_items < numitems)
arrowblock->FlipBlt(arrowblock, windowwid-ARROWBUTTONWID, buttonyp + 4 + ARROWBUTTONWID, Common::kBitmap_VFlip);
delete arrowblock;
}
示例3: __actual_invscreen
int __actual_invscreen() {
int BUTTONAREAHEIGHT = get_fixed_pixel_size(30);
int cmode=CURS_ARROW, toret = -1;
int top_item = 0, num_visible_items = 0;
int MAX_ITEMAREA_HEIGHT = ((scrnhit - BUTTONAREAHEIGHT) - get_fixed_pixel_size(20));
in_inv_screen++;
inv_screen_newroom = -1;
Bitmap *ds = NULL;
start_actinv:
ds = SetVirtualScreen(virtual_screen);
DisplayInvItem dii[MAX_INV];
int numitems=0,ww,widest=0,highest=0;
if (charextra[game.playercharacter].invorder_count < 0)
update_invorder();
if (charextra[game.playercharacter].invorder_count == 0) {
DisplayMessage(996);
in_inv_screen--;
return -1;
}
if (inv_screen_newroom >= 0) {
in_inv_screen--;
NewRoom(inv_screen_newroom);
return -1;
}
for (ww = 0; ww < charextra[game.playercharacter].invorder_count; ww++) {
if (game.invinfo[charextra[game.playercharacter].invorder[ww]].name[0]!=0) {
dii[numitems].num = charextra[game.playercharacter].invorder[ww];
dii[numitems].sprnum = game.invinfo[charextra[game.playercharacter].invorder[ww]].pic;
int snn=dii[numitems].sprnum;
if (spritewidth[snn] > widest) widest=spritewidth[snn];
if (spriteheight[snn] > highest) highest=spriteheight[snn];
numitems++;
}
}
if (numitems != charextra[game.playercharacter].invorder_count)
quit("inconsistent inventory calculations");
widest += get_fixed_pixel_size(4);
highest += get_fixed_pixel_size(4);
num_visible_items = (MAX_ITEMAREA_HEIGHT / highest) * ICONSPERLINE;
int windowhit = highest * (numitems/ICONSPERLINE) + get_fixed_pixel_size(4);
if ((numitems%ICONSPERLINE) !=0) windowhit+=highest;
if (windowhit > MAX_ITEMAREA_HEIGHT) {
windowhit = (MAX_ITEMAREA_HEIGHT / highest) * highest + get_fixed_pixel_size(4);
}
windowhit += BUTTONAREAHEIGHT;
int windowwid = widest*ICONSPERLINE + get_fixed_pixel_size(4);
if (windowwid < get_fixed_pixel_size(105)) windowwid = get_fixed_pixel_size(105);
int windowxp=scrnwid/2-windowwid/2;
int windowyp=scrnhit/2-windowhit/2;
int buttonyp=windowyp+windowhit-BUTTONAREAHEIGHT;
color_t draw_color = ds->GetCompatibleColor(play.sierra_inv_color);
ds->FillRect(Rect(windowxp,windowyp,windowxp+windowwid,windowyp+windowhit), draw_color);
draw_color = ds->GetCompatibleColor(0);
int bartop = windowyp + get_fixed_pixel_size(2);
int barxp = windowxp + get_fixed_pixel_size(2);
ds->FillRect(Rect(barxp,bartop, windowxp + windowwid - get_fixed_pixel_size(2),buttonyp-1), draw_color);
for (ww = top_item; ww < numitems; ww++) {
if (ww >= top_item + num_visible_items)
break;
Bitmap *spof=spriteset[dii[ww].sprnum];
wputblock(ds, barxp+1+((ww-top_item)%4)*widest+widest/2-spof->GetWidth()/2,
bartop+1+((ww-top_item)/4)*highest+highest/2-spof->GetHeight()/2,spof,1);
}
if ((spriteset[2041] == NULL) || (spriteset[2042] == NULL) || (spriteset[2043] == NULL))
quit("!InventoryScreen: one or more of the inventory screen graphics have been deleted");
#define BUTTONWID spritewidth[2042]
// Draw select, look and OK buttons
wputblock(ds, windowxp+2, buttonyp + get_fixed_pixel_size(2), spriteset[2041], 1);
wputblock(ds, windowxp+3+BUTTONWID, buttonyp + get_fixed_pixel_size(2), spriteset[2042], 1);
wputblock(ds, windowxp+4+BUTTONWID*2, buttonyp + get_fixed_pixel_size(2), spriteset[2043], 1);
// Draw Up and Down buttons if required
const int ARROWBUTTONWID = 11;
Bitmap *arrowblock = BitmapHelper::CreateTransparentBitmap (ARROWBUTTONWID, ARROWBUTTONWID);
draw_color = arrowblock->GetCompatibleColor(0);
if (play.sierra_inv_color == 0)
draw_color = ds->GetCompatibleColor(14);
arrowblock->DrawLine(Line(ARROWBUTTONWID/2, 2, ARROWBUTTONWID-2, 9), draw_color);
arrowblock->DrawLine(Line(ARROWBUTTONWID/2, 2, 2, 9), draw_color);
arrowblock->DrawLine(Line(2, 9, ARROWBUTTONWID-2, 9), draw_color);
arrowblock->FloodFill(ARROWBUTTONWID/2, 4, draw_color);
if (top_item > 0)
wputblock(ds, windowxp+windowwid-ARROWBUTTONWID, buttonyp + get_fixed_pixel_size(2), arrowblock, 1);
if (top_item + num_visible_items < numitems)
arrowblock->FlipBlt(arrowblock, windowxp+windowwid-ARROWBUTTONWID, buttonyp + get_fixed_pixel_size(4) + ARROWBUTTONWID, Common::kBitmap_VFlip);
delete arrowblock;
domouse(1);
set_mouse_cursor(cmode);
int wasonitem=-1;
//.........这里部分代码省略.........