Применение Windows API
вернуться

Легалов А. И.

Шрифт:

 int y = yRange + static_cast<int>(yRange * cos(4 * speed * _tick));

 Blitter bltMask(_mask);

 bltMask.SetMode(SRCPAINT);

 bltMask.SetDest(x, y);

 bltMask.BlitTo(bmpCanvas);

 Blitter bltSprite(_sprite);

 bltSprite.SetMode(SRCAND);

 bltSprite.SetDest(x, y);

 bltSprite.BlitTo(bmpCanvas);

 // update the buffer

 _bitmapBuf = bmp;

}

For completeness, here's the definition of bitmap canvas. You draw directly on this canvas using standard canvas methods, like Line, Text, SetPixel, etc... Here we only blit bitmaps into it.

class BitmapCanvas: public MemCanvas {

public:

 BitmapCanvas(HDC hdc, HBITMAP hBitmap) : MemCanvas(hdc) {

// convert bitmap to format compatible with canvas

_hOldBitmap = reinterpret_cast(::SelectObject(_hdc, hBitmap));

 }

 ~BitmapCanvas {

::SelectObject(_hdc, _hOldBitmap);

 }

private:

 HBITMAP _hOldBitmap;

};

class MemCanvas: public Canvas {

public:

 MemCanvas(HDC hdc) : Canvas(::CreateCompatibleDC(hdc)) {}

 ~MemCanvas {

::DeleteDC(_hdc);

 }

};

Now, if you want more speed, read about DirectDraw.

  • 1
  • ...
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win