本文整理汇总了C++中clan::Canvas::draw_lines方法的典型用法代码示例。如果您正苦于以下问题:C++ Canvas::draw_lines方法的具体用法?C++ Canvas::draw_lines怎么用?C++ Canvas::draw_lines使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类clan::Canvas
的用法示例。
在下文中一共展示了Canvas::draw_lines方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw_demo
void SineScroll::draw_demo(clan::Canvas &canvas, int delta_ms)
{
clan::Rectf rect(0.0f, 0.0f, clan::Sizef(300.0f, 300.0f));
clan::Rectf texture_unit1_coords(0.0f, 0.0f, 1.0f, 1.0f);
std::vector<clan::Vec2f> dest_position;
std::vector<clan::Vec2f> texture_position;
int dest_width = canvas.get_width();
if (dest_width <=0)
return;
int dest_xoffset = 0;
int gc_height = canvas.get_height();
int dest_height = 128;
int dest_start_y = (gc_height - dest_height) / 2;
float texture_y_start = 0.15f; // Set to 0.0f for start and 1.0f for end to use the entire texture
float texture_y_end = 0.5f;
dest_position.reserve(dest_width * 2);
texture_position.reserve(dest_width * 2);
float sin_amplitude = ( (float) gc_height / 4.0f);
if (delta_ms > 1000) // Limit to 1 second to frame
delta_ms = 1000;
sin_offset += ((float) delta_ms / 1000.0f);
if (sin_offset > (2.0f * clan::PI))
sin_offset -= clan::PI * 2.0f;
for (int cnt=0; cnt < dest_width; cnt++)
{
float y_offset = sin_amplitude * sin( sin_offset + (float) cnt / 100.0f ) ;
dest_position.push_back( clan::Vec2f( cnt, dest_start_y + y_offset ) );
dest_position.push_back( clan::Vec2f( cnt, dest_start_y + dest_height + y_offset) );
texture_position.push_back( clan::Vec2f( (float) cnt / dest_width, texture_y_start ) );
texture_position.push_back( clan::Vec2f( (float) cnt / dest_width, texture_y_end ) );
}
canvas.draw_lines(&dest_position[0], &texture_position[0], dest_position.size(), texture);
}