本文整理汇总了C++中ChartRenderer::GetCanvas方法的典型用法代码示例。如果您正苦于以下问题:C++ ChartRenderer::GetCanvas方法的具体用法?C++ ChartRenderer::GetCanvas怎么用?C++ ChartRenderer::GetCanvas使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ChartRenderer
的用法示例。
在下文中一共展示了ChartRenderer::GetCanvas方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: x_last
void
TraceHistoryRenderer::render_filled_posneg(ChartRenderer &chart,
const TraceVariableHistory& var) const
{
fixed x_last(fixed(0)), y_last(fixed(0));
unsigned i=0;
for (auto it = var.begin(); it != var.end(); ++it, ++i) {
fixed x= fixed(i);
fixed y= *it;
if (i) {
if (sgn(y)*sgn(y_last)<0) {
if (positive(y_last))
chart.DrawFilledLine(x_last, y_last, x_last+fixed(0.5), fixed(0),
vario_look.lift_brush);
else if (negative(y_last))
chart.DrawFilledLine(x_last, y_last, x_last+fixed(0.5), fixed(0),
vario_look.sink_brush);
x_last = x-fixed(0.5);
y_last = fixed(0);
}
if (positive(y) || positive(y_last))
chart.DrawFilledLine(x_last, y_last, x, y, vario_look.lift_brush);
else if (negative(y) || negative(y_last))
chart.DrawFilledLine(x_last, y_last, x, y, vario_look.sink_brush);
}
x_last = x;
y_last = y;
}
if (look.inverse)
chart.GetCanvas().SelectWhiteBrush();
else
chart.GetCanvas().SelectBlackBrush();
chart.DrawDot(x_last, y_last, Layout::Scale(2));
}
示例2: blend
//.........这里部分代码省略.........
const ThermalBandInfo &thermal_band = calculated.thermal_band;
// calculate height above safety height
fixed hoffset = task_props.route_planner.safety_height_terrain +
calculated.GetTerrainBaseFallback();
fixed h = fixed(0);
if (basic.NavAltitudeAvailable()) {
h = basic.nav_altitude - hoffset;
chart.ScaleYFromValue(h);
}
bool draw_start_height = false;
fixed hstart = fixed(0);
draw_start_height = ordered_props
&& calculated.ordered_task_stats.task_valid
&& ordered_props->start_constraints.max_height != 0
&& calculated.terrain_valid;
if (draw_start_height) {
hstart = fixed(ordered_props->start_constraints.max_height);
if (ordered_props->start_constraints.max_height_ref == AltitudeReference::AGL &&
calculated.terrain_valid)
hstart += calculated.terrain_altitude;
hstart -= hoffset;
chart.ScaleYFromValue(hstart);
}
// no thermalling has been done above safety height
if (!positive(calculated.thermal_band.max_thermal_height))
return;
// calculate averages
int numtherm = 0;
fixed Wmax = fixed(0);
fixed Wav = fixed(0);
fixed Wt[ThermalBandInfo::NUMTHERMALBUCKETS];
fixed ht[ThermalBandInfo::NUMTHERMALBUCKETS];
for (unsigned i = 0; i < ThermalBandInfo::NUMTHERMALBUCKETS; ++i) {
if (thermal_band.thermal_profile_n[i] < 6)
continue;
if (positive(thermal_band.thermal_profile_w[i])) {
// height of this thermal point [0,mth]
// requires 5 items in bucket before displaying, to eliminate kinks
fixed wthis = thermal_band.thermal_profile_w[i] / thermal_band.thermal_profile_n[i];
ht[numtherm] = i * calculated.thermal_band.max_thermal_height
/ ThermalBandInfo::NUMTHERMALBUCKETS;
Wt[numtherm] = wthis;
Wmax = std::max(Wmax, wthis);
Wav+= wthis;
numtherm++;
}
}
chart.ScaleXFromValue(Wmax);
if (!numtherm)
return;
chart.ScaleXFromValue(fixed(1.5)*Wav/numtherm);
if ((!draw_start_height) && (numtherm<=1))
// don't display if insufficient statistics
// but do draw if start height needs to be drawn
return;
const Pen *fpen = is_infobox ? NULL : &look.pen;
// position of thermal band
if (numtherm > 1) {
std::vector< std::pair<fixed, fixed> > thermal_profile;
thermal_profile.reserve(numtherm);
for (int i = 0; i < numtherm; ++i)
thermal_profile.emplace_back(Wt[i], ht[i]);
if (!is_infobox) {
#ifdef ENABLE_OPENGL
const GLEnable blend(GL_BLEND);
#endif
chart.DrawFilledY(thermal_profile, look.brush, fpen);
} else
chart.DrawFilledY(thermal_profile, look.brush, fpen);
}
// position of thermal band
if (basic.NavAltitudeAvailable()) {
const Pen &pen = is_infobox && look.inverse
? look.white_pen : look.black_pen;
chart.DrawLine(fixed(0), h,
settings_computer.polar.glide_polar_task.GetMC(), h, pen);
if (is_infobox && look.inverse)
chart.GetCanvas().SelectWhiteBrush();
else
chart.GetCanvas().SelectBlackBrush();
chart.DrawDot(settings_computer.polar.glide_polar_task.GetMC(),
h, Layout::Scale(2));
}
}