当前位置: 首页>>代码示例>>C++>>正文


C++ Window::Draw方法代码示例

本文整理汇总了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);
}
开发者ID:koalamrfan,项目名称:koala,代码行数:57,代码来源:ywindow.cpp

示例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);
}
开发者ID:jinsolj,项目名称:tmx-map-explorer,代码行数:13,代码来源:actor.cpp

示例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);
}
开发者ID:jinsolj,项目名称:tmx-map-explorer,代码行数:13,代码来源:actor.cpp

示例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;
}
开发者ID:halberd-project,项目名称:Poleaxe,代码行数:16,代码来源:main.cpp

示例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;
}
开发者ID:SBeator,项目名称:LearnSDL,代码行数:16,代码来源:main.cpp

示例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();
	}
}
开发者ID:MiyaxinPittahai,项目名称:s25rttr,代码行数:24,代码来源:Window.cpp

示例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();
    }
}
开发者ID:viksuhor,项目名称:s25client,代码行数:22,代码来源:Window.cpp

示例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);
}
开发者ID:jinsolj,项目名称:tmx-map-explorer,代码行数:6,代码来源:actor.cpp

示例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;
}
开发者ID:anagorko,项目名称:zpk2015,代码行数:101,代码来源:main.cpp


注:本文中的Window::Draw方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。