本文整理汇总了C++中Window::Draw方法的典型用法代码示例。如果您正苦于以下问题:C++ Window::Draw方法的具体用法?C++ Window::Draw怎么用?C++ Window::Draw使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Window
的用法示例。
在下文中一共展示了Window::Draw方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Proc
LRESULT CALLBACK Proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
Window* window = (Window*)GetWindowLong(hwnd, GWL_USERDATA);
switch (message) {
case WM_ERASEBKGND:
return true;
case WM_PAINT:
{
RECT rect;
GetUpdateRect(hwnd, &rect, FALSE);
SkRect clip_rect = SkRect::MakeXYWH(
SkIntToScalar(rect.left),
SkIntToScalar(rect.top),
SkIntToScalar(rect.right - rect.left),
SkIntToScalar(rect.bottom - rect.top));
window->Draw(clip_rect);
TexturePool::GetInstance()->CanvasToScreen(clip_rect);
}
break;
case WM_SIZE:
{
if(wParam != SIZE_MINIMIZED) {
RECT rect;
GetClientRect(hwnd, &rect);
window->SetGeometry(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top);
window->Dolayout();
}
}
break;
case WM_GETMINMAXINFO:
{
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
if(window->LimitMaxWidth() < (int)(INT32_MAX - GetSystemMetrics(SM_CYBORDER) + GetSystemMetrics(SM_CYBORDER))) {
lpMMI->ptMaxTrackSize.x = window->LimitMaxWidth() + GetSystemMetrics(SM_CYBORDER) + GetSystemMetrics(SM_CYBORDER);
}
if(window->LimitMaxHeight() < (int)(INT32_MAX - GetSystemMetrics(SM_CYBORDER) + GetSystemMetrics(SM_CYBORDER))) {
lpMMI->ptMaxTrackSize.y = window->LimitMaxHeight() + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYBORDER);
}
RECT inner_rect, window_rect;
GetClientRect(hwnd, &inner_rect);
GetWindowRect(hwnd, &window_rect);
lpMMI->ptMinTrackSize.x = window->LimitMinWidth() +
((window_rect.right - window_rect.left) - (inner_rect.right - inner_rect.left));
lpMMI->ptMinTrackSize.y = window->LimitMinHeight() +
((window_rect.bottom - window_rect.top) - (inner_rect.bottom - inner_rect.top));
}
default:
auto events = EventFactory::GetInstance()->CreateEvent(message, wParam, lParam);
for (auto event:events) {
if(event && event->Target()) {
event->Target()->DoEvent(event.get());
}
}
}
return CallWindowProc(window->oldProc_, hwnd, message, wParam, lParam);
}
示例2: draw
void Actor::draw(Window &window)
{
int frame = mAnimFrame;
if (frame3)
frame = 1;
SDL_Rect animClip = { getSpriteClip()->x + (frame * getWorld()->getCharSprites()->tileW), getSpriteClip()->y + (mAnimState * getWorld()->getCharSprites()->tileH),
getWorld()->getCharSprites()->tileW, getWorld()->getCharSprites()->tileH };
window.Draw(getSprite(), getPosx() - getWorld()->getCamera()->view.x, getPosy() - getWorld()->getCamera()->view.y, &animClip);
}
示例3: drawRect
void Actor::drawRect(Window &window)
{
SDL_Rect colBox = mCollisionBox;
colBox.x -= getWorld()->getCamera()->view.x;
colBox.y -= getWorld()->getCamera()->view.y;
colBox.x *= SIZE_FACTOR;
colBox.y *= SIZE_FACTOR;
colBox.w *= SIZE_FACTOR;
colBox.h *= SIZE_FACTOR;
window.Draw(window.getGreen(), colBox);
}
示例4: main
int main(int argc, char **argv)
{
PoleaxeManager = Manager(new manager());
Alleg::Init();
Mouse m = Mouse(new mouse());
Keyboard k = Keyboard(new keyboard());
Display disp = Display(new display());
Timer t = Timer(new timer());
disp->SetDisplayMode(840, 525, 32);
Window w = Window(new window("test window", 10, 10, 300, 200, 0));
PoleaxeManager->AddWindow(w);
disp->SetBackground("background.bmp");
w->Draw();
PoleaxeManager->MessageLoop();
return 0;
}
示例5: main
int main(int argv, char** argc)
{
Window win;
win.Init("MyWindow");
SDL_Texture *texBackground = win.LoadImage("../res/background.png");
win.Clear();
win.Draw(texBackground,win.Box());
win.Present();
Event evt;
evt.AddCallback(SDL_KEYDOWN,funKeyDown);
evt.StartEvent();
return 0;
}
示例6: DrawControls
/**
* zeichnet die Steuerelemente.
*
* @author OLiver
*/
void Window::DrawControls(void)
{
for(std::map<unsigned int,Window*>::iterator it = idmap.begin(); it != idmap.end(); ++it)
{
Window *control = it->second;
assert(control);
control->Msg_PaintBefore();
control->Draw();
}
for(std::map<unsigned int,Window*>::iterator it = idmap.begin(); it != idmap.end(); ++it)
{
Window *control = it->second;
assert(control);
control->Msg_PaintAfter();
}
}
示例7: DrawControls
/**
* zeichnet die Steuerelemente.
*/
void Window::DrawControls()
{
for(std::map<unsigned int, Window*>::iterator it = childIdToWnd_.begin(); it != childIdToWnd_.end(); ++it)
{
Window* control = it->second;
RTTR_Assert(control);
control->Msg_PaintBefore();
control->Draw();
}
for(std::map<unsigned int, Window*>::iterator it = childIdToWnd_.begin(); it != childIdToWnd_.end(); ++it)
{
Window* control = it->second;
RTTR_Assert(control);
control->Msg_PaintAfter();
}
}
示例8: drawAnimate
void Tile::drawAnimate(Window &window)
{
//use window to draw objects
//sprites will be drawn relative to the camera view
window.Draw(mSprite, mPosx - mWorld->getCamera()->view.x, mPosy - mWorld->getCamera()->view.y, &mSpriteClip);
}
示例9: main
//.........这里部分代码省略.........
bool koniecKlikniecia = false;
if (mysz.buttons & 1 && klikniecieMyszy == false && al_get_time() > blokadaKlikniecia + 0.3)
{
klikniecieMyszy = true;
if (window->CzyFraktal())
{
poczX = mx;
poczY = my;
}
}
else if (!(mysz.buttons & 1) && klikniecieMyszy == true && al_get_time() > blokadaKlikniecia + 0.3)
{
klikniecieMyszy = false;
int pp = window->stanOkna;
int respond = window->Click(mx, my);
if (respond == Responds_t::RESPOND_CLOSE_WINDOW)
petla = false;
if (window->CzyFraktal() && (pp == WINDOWSTATE_MANDELBROT || pp == WINDOWSTATE_JULIA))
{
koniecKlikniecia = true;
}
if (pp == WINDOWSTATE_MENU && window->CzyFraktal())
{
window->ZaladujFraktal();
}
}
if (koniecKlikniecia)
{
if (window->CzyFraktal())
{
Fraktal* fraktal = window->AktualnyFraktal();
fraktal->Powieksz(poczX, mx, poczY, SkalujY(poczY, screenRatio, poczX, mx));
}
poczX = -1, poczY = -1;
}
al_get_next_event(key_queue, &ev);
if (ev.type == ALLEGRO_EVENT_KEY_DOWN && klawiszWcisniety == false && window->CzyFraktal())
{
int kod = ev.keyboard.keycode;
klawiszWcisniety = true;
if (kod == 9)
{
wpisywanieIteracji = true;
}
else if (kod == 10)
{
Fraktal* fraktal = window->AktualnyFraktal();
fraktal->Resetuj();
}
else if (kod >= 27 && kod <= 36 && wpisywanieIteracji)
{
pos += al_ustr_append_chr(str, kod + 21);
}
else if (kod == ALLEGRO_KEY_ENTER)
{
if (wpisywanieIteracji == true)
wpisywanieIteracji = false;
unsigned char* tmp = str->data;
int t = atoi((const char*)tmp);
window->SetIteracje(t);
}
else if (kod == ALLEGRO_KEY_BACKSPACE)
{
if (al_ustr_prev(str, &pos))
al_ustr_truncate(str, pos);
}
else if (kod == ALLEGRO_KEY_ESCAPE)
{
window->stanOkna = WINDOWSTATE_MENU;
}
}
else if (ev.type == ALLEGRO_EVENT_KEY_UP)
{
klawiszWcisniety = false;
}
al_clear_to_color(backgroundColor);
if (wpisywanieIteracji)
window->Draw(str);
else
window->Draw(NULL);
if(poczX != -1)
al_draw_rectangle(poczX, poczY, mx, SkalujY(poczY, screenRatio, poczX, mx), frameColor, frameThickness);
al_flip_display();
}
al_destroy_display(okno);
return 0;
}