本文整理汇总了C++中clan::Canvas::fill_triangles方法的典型用法代码示例。如果您正苦于以下问题:C++ Canvas::fill_triangles方法的具体用法?C++ Canvas::fill_triangles怎么用?C++ Canvas::fill_triangles使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类clan::Canvas
的用法示例。
在下文中一共展示了Canvas::fill_triangles方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: on_render
void ColorWheel::on_render(clan::Canvas &canvas, const clan::Rect &update_rect)
{
get_options();
clan::Pointf center( (float) canvas.get_width()/2.0f, (float) canvas.get_height()/2.0f);
float radius = 200.0f;
create_colorwheel(center, radius);
canvas.fill_triangles(colorwheel_positions, colorwheel_colors, colorwheel_segments * 3);
draw_labels(canvas);
}
示例2: draw
void ColorWheel::draw(clan::Canvas &canvas, const clan::Pointf ¢er, float radius)
{
const int colorwheel_segments = 360 / 2;
clan::Vec2f colorwheel_positions[colorwheel_segments * 3];
clan::Colorf colorwheel_colors[colorwheel_segments * 3];
for (int segment = 0; segment < colorwheel_segments; segment++)
{
int source_segment = segment;
int next_segment = segment + 1;
float src_angle = (source_segment * clan::PI*2.0f) / colorwheel_segments;
float dest_angle = (next_segment * clan::PI*2.0f) / colorwheel_segments;
src_angle -= clan::PI / 2.0f; // So red is at the top
dest_angle -= clan::PI / 2.0f;
float src_x = cos(src_angle);
float src_y = sin(src_angle);
float dest_x = cos(dest_angle);
float dest_y = sin(dest_angle);
int triangle_offset = segment * 3;
colorwheel_positions[triangle_offset + 0].x = center.x;
colorwheel_positions[triangle_offset + 0].y = center.y;
colorwheel_positions[triangle_offset + 1].x = (src_x * radius) + center.x;
colorwheel_positions[triangle_offset + 1].y = (src_y * radius) + center.y;
colorwheel_positions[triangle_offset + 2].x = (dest_x * radius) + center.x;
colorwheel_positions[triangle_offset + 2].y = (dest_y * radius) + center.y;
clan::Colorf work_color_src;
clan::Colorf work_color_dest;
clan::Colorf work_color_center;
if (is_hsl)
{
clan::ColorHSLf color_src_hsv(source_segment * 360.0f / colorwheel_segments, saturation_outer, value_outer, 1.0f);
work_color_src = clan::Colorf(color_src_hsv);
clan::ColorHSLf color_dest_hsv(next_segment * 360.0f / colorwheel_segments, saturation_outer, value_outer, 1.0f);
work_color_dest = clan::Colorf(color_dest_hsv);
clan::ColorHSLf color_center_hsv(((source_segment + next_segment) / 2.0f) * 360.0f / colorwheel_segments, saturation_inner, value_inner, 1.0f);
work_color_center = clan::Colorf(color_center_hsv);
}
else
{
clan::ColorHSVf color_src_hsv(source_segment * 360.0f / colorwheel_segments, saturation_outer, value_outer, 1.0f);
work_color_src = clan::Colorf(color_src_hsv);
clan::ColorHSVf color_dest_hsv(next_segment * 360.0f / colorwheel_segments, saturation_outer, value_outer, 1.0f);
work_color_dest = clan::Colorf(color_dest_hsv);
clan::ColorHSVf color_center_hsv(((source_segment + next_segment) / 2.0f) * 360.0f / colorwheel_segments, saturation_inner, value_inner, 1.0f);
work_color_center = clan::Colorf(color_center_hsv);
}
colorwheel_colors[triangle_offset + 0] = work_color_center;
colorwheel_colors[triangle_offset + 1] = work_color_src;
colorwheel_colors[triangle_offset + 2] = work_color_dest;
}
canvas.fill_triangles(colorwheel_positions, colorwheel_colors, colorwheel_segments * 3);
}