本文整理汇总了C++中wxGraphicsContext类的典型用法代码示例。如果您正苦于以下问题:C++ wxGraphicsContext类的具体用法?C++ wxGraphicsContext怎么用?C++ wxGraphicsContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了wxGraphicsContext类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: DrawBackground
void GCDCGraphs::DrawBackground(wxGraphicsContext &dc) {
int w, h;
GetClientSize(&w, &h);
PeriodType pt = m_draws_wdg->GetSelectedDraw()->GetPeriod();
size_t pc = m_draws_wdg->GetSelectedDraw()->GetValuesTable().size();
dc.SetBrush(wxBrush(back2_col, wxSOLID));
dc.DrawRectangle(0, 0, w, h);
size_t i = 0;
int c = 1;
double x = m_screen_margins.leftmargin + 1;
while (i < pc) {
double x1 = GetX(i);
i += TimeIndex::PeriodMult[pt];
double x2 = GetX(i);
if (c > 0)
dc.SetBrush(wxBrush(back1_col, wxSOLID));
else
dc.SetBrush(wxBrush(back2_col, wxSOLID));
c *= -1;
dc.DrawRectangle(x, m_screen_margins.topmargin, x2 - x1, h - m_screen_margins.topmargin + 1);
x = x + x2 - x1;
}
}
开发者ID:,项目名称:,代码行数:34,代码来源:
示例2: DrawXAxisVals
void GCDCGraphs::DrawXAxisVals(wxGraphicsContext& dc) {
Draw* draw = m_draws_wdg->GetSelectedDraw();
if (draw == NULL)
return;
/* Draw ticks on axis. */
int i = PeriodMarkShift[draw->GetPeriod()];
int size = draw->GetValuesTable().size();
int w, h;
GetClientSize(&w, &h);
wxDateTime prev_date;
while (i < size) {
int x = GetX(i);
dc.StrokeLine(x, h - m_screen_margins.bottommargin + 1, x, h - m_screen_margins.bottommargin - 1);
wxDateTime date = draw->GetTimeOfIndex(i);
/* Print date */
wxString datestring = get_date_string(draw->GetPeriod(), prev_date, date);
double textw, texth, td, tel;
dc.GetTextExtent(datestring, &textw, &texth, &td, &tel);
dc.DrawText(datestring, x - textw / 2, h - m_screen_margins.bottommargin + 1);
i += TimeIndex::PeriodMult[draw->GetPeriod()];
prev_date = date;
}
}
开发者ID:,项目名称:,代码行数:31,代码来源:
示例3: RecalculateMargins
void GCDCGraphs::RecalculateMargins(wxGraphicsContext &dc) {
if (!m_recalulate_margins)
return;
double leftmargin = 36;
double bottommargin = 12;
double topmargin = 24;
for (size_t i = 0; i < m_draws.size(); i++) {
double tw, th, td, tel;
DrawInfo *di = m_draws[i]->GetDrawInfo();
wxString sval = di->GetValueStr(di->GetMax(), _T(""));
dc.GetTextExtent(sval, &tw, &th, &td, &tel);
if (leftmargin < tw + 1)
leftmargin = tw + 1;
if (bottommargin < th + 1)
bottommargin = th + 1;
if (topmargin < th + m_screen_margins.infotopmargin)
topmargin = th + m_screen_margins.infotopmargin;
dc.GetTextExtent(di->GetUnit(), &tw, &th, &td, &tel);
if (leftmargin < tw + 6)
leftmargin = tw + 6;
}
m_screen_margins.leftmargin = leftmargin;
m_screen_margins.bottommargin = bottommargin;
m_screen_margins.topmargin = topmargin;
m_recalulate_margins = false;
}
开发者ID:,项目名称:,代码行数:33,代码来源:
示例4: Draw
void wxChartArc::Draw(wxGraphicsContext &gc)
{
wxGraphicsPath path = gc.CreatePath();
if (m_innerRadius > 0)
{
path.AddArc(m_x, m_y, m_innerRadius, m_startAngle, m_endAngle, true);
path.AddArc(m_x, m_y, m_outerRadius, m_endAngle, m_startAngle, false);
}
else
{
path.AddArc(m_x, m_y, m_outerRadius, m_endAngle, m_startAngle, false);
path.AddLineToPoint(m_x, m_y);
}
path.CloseSubpath();
wxBrush brush(m_options.GetFillColor());
gc.SetBrush(brush);
gc.FillPath(path);
wxPen pen(*wxWHITE, m_options.GetOutlineWidth());
gc.SetPen(pen);
gc.StrokePath(path);
}
开发者ID:yecaokinux,项目名称:wxCharts,代码行数:25,代码来源:wxchartarc.cpp
示例5: DrawYAxis
void GCDCGraphs::DrawYAxis(wxGraphicsContext& dc) {
int w, h;
GetClientSize(&w, &h);
dc.StrokeLine(m_screen_margins.leftmargin, 0, m_screen_margins.leftmargin, h);
dc.StrokeLine(m_screen_margins.leftmargin - 5, 7, m_screen_margins.leftmargin, 0);
dc.StrokeLine(m_screen_margins.leftmargin, 0, m_screen_margins.leftmargin + 5, 7);
}
开发者ID:,项目名称:,代码行数:8,代码来源:
示例6: DrawGrid
void ElementCanvasWindow::DrawGrid(wxGraphicsContext &gc)
{
wxPen pen(wxColor(0x7F, 0x7F, 0x7F), 1);
gc.SetPen(pen);
for (size_t i = 0; i < 20; i += 10)
{
gc.StrokeLine(i, 0, i, 20);
}
}
开发者ID:Kvaz1r,项目名称:wxCharts,代码行数:9,代码来源:elementcanvaswindow.cpp
示例7: DrawUnit
void GCDCGraphs::DrawUnit(wxGraphicsContext &dc) {
Draw* draw = m_draws_wdg->GetSelectedDraw();
if (draw == NULL)
return;
double textw, texth, th, tsel;
wxString unit = draw->GetDrawInfo()->GetUnit();
dc.GetTextExtent(unit, &textw, &texth, &th, &tsel);
dc.DrawText(unit, m_screen_margins.leftmargin - 6 - textw, m_screen_margins.topmargin - 2 - texth);
}
开发者ID:,项目名称:,代码行数:11,代码来源:
示例8: Draw
void wxChartBackground::Draw(wxDouble x,
wxDouble y,
wxDouble width,
wxDouble height,
wxGraphicsContext &gc)
{
wxGraphicsPath path = gc.CreatePath();
path.AddRoundedRectangle(x, y, width, height, m_options.GetCornerRadius());
wxBrush brush(m_options.GetColor());
gc.SetBrush(brush);
gc.FillPath(path);
}
开发者ID:yecaokinux,项目名称:wxCharts,代码行数:14,代码来源:wxchartbackground.cpp
示例9: DrawXAxis
void GCDCGraphs::DrawXAxis(wxGraphicsContext &dc) {
int arrow_width = 8;
int arrow_height = 4;
int w, h;
GetClientSize(&w, &h);
//dc.StrokeLine(0, h - m_screen_margins.bottommargin, w - m_screen_margins.rightmargin, h - m_screen_margins.bottommargin);
dc.StrokeLine(0, h - m_screen_margins.bottommargin, w, h - m_screen_margins.bottommargin);
dc.StrokeLine(w - arrow_width, h - m_screen_margins.bottommargin - arrow_height,
w, h - m_screen_margins.bottommargin);
dc.StrokeLine(w - arrow_width, h - m_screen_margins.bottommargin + arrow_height,
w, h - m_screen_margins.bottommargin);
}
开发者ID:,项目名称:,代码行数:15,代码来源:
示例10: DrawCursor
void GCDCGraphs::DrawCursor(wxGraphicsContext &dc, Draw* d) {
int i = d->GetCurrentIndex();
if (i < 0)
return;
if (d->GetValuesTable().at(i).IsData() == false)
return;
dc.SetBrush(wxBrush(wxColour(0,0,0), wxTRANSPARENT));
dc.SetPen(wxPen(*wxWHITE, 1, wxSOLID));
double x = GetX(i);
double y = GetY(d->GetValuesTable().at(i).val, d->GetDrawInfo());
dc.DrawRectangle(x - 4, y - 4, 9, 9);
}
开发者ID:,项目名称:,代码行数:16,代码来源:
示例11: DrawNoData
void GCDCGraphs::DrawNoData(wxGraphicsContext &dc) {
wxFont font = GetFont();
font.SetPointSize(font.GetPointSize() + 8);
dc.SetFont(font, *wxWHITE);
int w, h;
GetClientSize(&w, &h);
w -= m_screen_margins.leftmargin - m_screen_margins.rightmargin;
h -= m_screen_margins.topmargin - m_screen_margins.bottommargin;
wxString sval = _("No data");
double textw, texth, textd, textel;
dc.GetTextExtent(sval, &textw, &texth, &textd, &textel);
dc.DrawText(sval, m_screen_margins.leftmargin + w / 2 - textw / 2 - 1, m_screen_margins.topmargin + h / 2 - texth / 2);
}
开发者ID:,项目名称:,代码行数:17,代码来源:
示例12: DrawParamName
void GCDCGraphs::DrawParamName(wxGraphicsContext &dc) {
DrawInfo *di = m_draws_wdg->GetCurrentDrawInfo();
if (di == NULL)
return;
dc.SetBrush(*wxBLACK_BRUSH);
dc.SetPen(*wxWHITE_PEN);
wxFont f = GetFont();
int ps = f.GetPointSize();
int fw = f.GetWeight();
f.SetWeight(wxFONTWEIGHT_BOLD);
f.SetPointSize(ps * 1.25);
dc.SetFont(f, di->GetDrawColor());
int w, h;
GetSize(&w, &h);
wxString text = m_cfg_mgr->GetConfigTitles()[di->GetBasePrefix()] + _T(":") + di->GetParamName();
double tw, th, _th, _ts;
dc.GetTextExtent(text, &tw, &th, &_th, &_ts);
dc.DrawRectangle(w / 2 - tw / 2 - 1, h / 2 - th / 2 - 1, tw + 2, th + 2);
dc.DrawText(text, w / 2 - tw / 2, h / 2 - th / 2);
f.SetPointSize(ps);
f.SetWeight(fw);
}
开发者ID:,项目名称:,代码行数:29,代码来源:
示例13: DrawWindowInfo
void GCDCGraphs::DrawWindowInfo(wxGraphicsContext &dc) {
double info_left_marg = m_screen_margins.leftmargin + 8;
double param_name_shift = 5;
if (m_draws.size() < 1)
return;
int w, h;
GetClientSize(&w, &h);
DrawInfo *info = m_draws[0]->GetDrawInfo();
wxString name = info->GetSetName().c_str();
double namew, nameh, th, tsel;
dc.GetTextExtent(name, &namew, &nameh, &th, &tsel);
dc.DrawText(name, info_left_marg, m_screen_margins.infotopmargin);
int xpos = info_left_marg + namew + param_name_shift;
for (int i = 0; i < (int)m_draws.size(); ++i) {
if (!m_draws[i]->GetEnable())
continue;
DrawInfo *info = m_draws[i]->GetDrawInfo();
dc.SetFont(GetFont(), info->GetDrawColor());
name = info->GetShortName().c_str();
if (!name.IsEmpty()) {
dc.GetTextExtent(name, &namew, &nameh, &th, &tsel);
dc.DrawText(name, xpos, m_screen_margins.infotopmargin);
xpos += namew + param_name_shift;
} else {
xpos += param_name_shift;
}
}
}
开发者ID:,项目名称:,代码行数:40,代码来源:
示例14: Draw
void wxChartTooltip::Draw(wxGraphicsContext &gc)
{
wxString text = m_provider->GetTooltipText();
wxFont font(wxSize(0, m_options.GetFontSize()),
m_options.GetFontFamily(), m_options.GetFontStyle(), wxFONTWEIGHT_NORMAL);
wxDouble tooltipWidth;
wxDouble tooltipHeight;
wxChartUtilities::GetTextSize(gc, font, text, tooltipWidth, tooltipHeight);
tooltipWidth += 2 * m_options.GetHorizontalPadding();
tooltipHeight += 2 * m_options.GetVerticalPadding();
wxDouble tooltipX = m_position.m_x - (tooltipWidth / 2);
wxDouble tooltipY = m_position.m_y - tooltipHeight;
wxChartBackground background(m_options.GetBackgroundOptions());
background.Draw(tooltipX, tooltipY, tooltipWidth, tooltipHeight, gc);
gc.SetFont(font, m_options.GetFontColor());
gc.DrawText(text, tooltipX + m_options.GetHorizontalPadding(), tooltipY + m_options.GetVerticalPadding());
}
开发者ID:Kvaz1r,项目名称:wxCharts,代码行数:23,代码来源:wxcharttooltip.cpp
示例15: Draw
void wxPDFViewPage::Draw(wxPDFViewPagesClient* client, wxDC& dc, wxGraphicsContext& gc, const wxRect& rect)
{
// Calculate the required bitmap size
wxSize bmpSize = rect.GetSize();
double scaleX, scaleY;
dc.GetUserScale(&scaleX, &scaleY);
bmpSize.x *= scaleX;
bmpSize.y *= scaleY;
double screenScale = dc.GetContentScaleFactor();
bmpSize.x *= screenScale;
bmpSize.y *= screenScale;
wxBitmap bmp = client->GetCachedBitmap(m_index, bmpSize);
if (bmp.IsOk())
{
gc.DrawBitmap(bmp, rect.x, rect.y, rect.width, rect.height);
} else {
// Draw empty page
gc.SetBrush(*wxWHITE_BRUSH);
gc.SetPen(wxNullPen);
gc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
}
}
开发者ID:amitdo,项目名称:wxPDFView,代码行数:24,代码来源:PDFViewPages.cpp
示例16: DrawRemarksBitmaps
void GCDCGraphs::DrawRemarksBitmaps(wxGraphicsContext &dc) {
Draw* draw = m_draws_wdg->GetSelectedDraw();
if (draw == NULL)
return;
const ValuesTable& vt = draw->GetValuesTable();
for (size_t i = 0; i < draw->GetValuesTable().size(); i++)
if (vt.at(i).m_remark) {
double x = GetX(i);
dc.DrawBitmap(m_remark_flag_bitmap,
x - m_remark_flag_bitmap.GetWidth() / 2,
m_screen_margins.topmargin - 7,
m_remark_flag_bitmap.GetWidth(),
m_remark_flag_bitmap.GetHeight());
}
}
开发者ID:,项目名称:,代码行数:16,代码来源:
示例17: DrawGraphs
void GCDCGraphs::DrawGraphs(wxGraphicsContext &dc) {
dc.SetPen(wxPen(wxColour(255, 255, 255), 1, wxSOLID));
int sel = m_draws_wdg->GetSelectedDrawIndex();
if (sel < 0)
return;
for (size_t i = 0; i <= m_draws.size(); i++) {
size_t j = i;
if ((int) j == sel)
continue;
if (j == m_draws.size())
j = sel;
Draw* d = m_draws[j];
DrawGraph(dc, d);
if ((int) j == sel)
DrawCursor(dc, d);
}
}
开发者ID:,项目名称:,代码行数:24,代码来源:
示例18: DrawYAxisVals
void GCDCGraphs::DrawYAxisVals(wxGraphicsContext& dc) {
Draw* draw = m_draws_wdg->GetSelectedDraw();
if (draw == NULL)
return;
DrawInfo *di = draw->GetDrawInfo();
if (!di->IsValid())
return;
double min = di->GetMin();
double max = di->GetMax();
if( max <= min ) {
// FIXME: Draw3 should atomaticly detect axes in that case, but
// it currently doesnt :(
wxLogWarning(_T("Parameter %s has invalid min/max values: min %f, max %f. Min is set to 0, and max to 100."), di->GetName().c_str(), min, max);
min = 0;
max = 100;
}
//procedure for calculating distance between marks stolen from SzarpDraw2
double x = max - min;
double step;
int i = 0;
if (x < 1)
for (;x < 1; x *=10, --i);
else
for (;(int)x / 10; x /=10, ++i);
if (x <= 1.5)
step = .1;
else if (x <= 3.)
step = .2;
else if (x <= 7.5)
step = .5;
else
step = 1.;
double acc = 1;
int prec = di->GetPrec();
for (int p = prec; p > 0; --p)
acc /= 10;
double factor = (i > 0) ? 10 : .1;
for (;i; i -= i / abs(i))
step *= factor;
if (step < acc)
step = acc;
dc.SetPen(wxPen(*wxWHITE, 1, wxSOLID));
int w, h;
GetClientSize(&w, &h);
h -= m_screen_margins.bottommargin + m_screen_margins.topmargin;
for (double val = max; (min - val) < acc; val -= step) {
int y = GetY(val, di);
dc.StrokeLine(m_screen_margins.leftmargin - 8, y, m_screen_margins.leftmargin, y);
wxString sval = di->GetValueStr(val, _T("- -"));
double textw, texth, textd, textel;
dc.GetTextExtent(sval, &textw, &texth, &textd, &textel);
dc.DrawText(sval, m_screen_margins.leftmargin - textw - 1, y + 2);
}
}
开发者ID:,项目名称:,代码行数:73,代码来源:
示例19: DrawSeasonLimitInfo
void GCDCGraphs::DrawSeasonLimitInfo(wxGraphicsContext &dc, int i, int month, int day, bool summer) {
const double stripe_width = 2;
double x1 = GetX(i);
double x2 = GetX(i + 1);
double x = (x1 + x2) / 2;
int w, h;
GetClientSize(&w, &h);
wxColour color = summer ? *wxBLUE : *wxRED;
dc.SetFont(GetFont(), color);
dc.SetPen(wxPen(color, 1, wxSOLID));
wxBrush brush(color);
dc.SetBrush(brush);
dc.DrawRectangle(x + 1, m_screen_margins.topmargin, stripe_width, w - m_screen_margins.topmargin - m_screen_margins.bottommargin);
wxString str;
if (summer)
str = wxString(_("summer season"));
else
str = wxString(_("winter season"));
str += wxString::Format(_T(" %d "), day);
switch (month) {
case 1:
str += _("january");
break;
case 2:
str += _("february");
break;
case 3:
str += _("march");
break;
case 4:
str += _("april");
break;
case 5:
str += _("may");
break;
case 6:
str += _("june");
break;
case 7:
str += _("july");
break;
case 8:
str += _("august");
break;
case 9:
str += _("septermber");
break;
case 10:
str += _("october");
break;
case 11:
str += _("november");
break;
case 12:
str += _("december");
break;
default:
assert(false);
}
double tw, th, td, tsel;
dc.GetTextExtent(_T("W"), &tw, &th, &td, &tsel);
int ty = m_screen_margins.topmargin + 1;
for (size_t i = 0; i < str.Len(); ++i) {
double lw, lh, ld, lsel;
wxString letter = str.Mid(i, 1);
dc.GetTextExtent(letter, &lw, &lh, &ld, &lsel);
dc.DrawText(letter, x + stripe_width + 2 + (tw - lw) / 2, ty);
ty += th + 2;
}
}
开发者ID:,项目名称:,代码行数:84,代码来源:
示例20: DrawGraph
void GCDCGraphs::DrawGraph(wxGraphicsContext &dc, Draw* d) {
static const int ellipse_size = 5;
if (d->GetEnable() == false)
return;
DrawInfo *di = d->GetDrawInfo();
bool double_cursor = d->GetSelected() && d->GetDoubleCursor();
wxGraphicsPath path1 = dc.CreatePath();
wxGraphicsPath path2 = dc.CreatePath();
wxGraphicsPath *path = &path1;
const wxColour &wc = di->GetDrawColor();
dc.SetPen(wxPen(wc, double_cursor ? 4 : 2, wxSOLID));
int pc = d->GetValuesTable().size();
bool prev_data = false;
bool switched_to_alternate = false;
bool switched_back = false;
int dcs = -1, dce = -1;
if (double_cursor) {
dcs = d->GetValuesTable().m_stats.Start() - d->GetValuesTable().m_view.Start();
dce = d->GetValuesTable().m_stats.End() - d->GetValuesTable().m_view.Start();
}
std::vector<std::pair<double,double> > p1circles;
std::vector<std::pair<double,double> > p2circles;
std::vector<std::pair<double,double> >* pcircles = &p1circles;
bool draw_circle =
d->GetPeriod() != PERIOD_T_DAY
&& d->GetPeriod() != PERIOD_T_30MINUTE
&& d->GetPeriod() != PERIOD_T_5MINUTE
&& d->GetPeriod() != PERIOD_T_MINUTE
&& d->GetPeriod() != PERIOD_T_30SEC;
for (int i = 0; i < pc; i++) {
if (!d->GetValuesTable().at(i).IsData()) {
prev_data = false;
continue;
}
double x = GetX(i);
double y = GetY(d->GetValuesTable().at(i).val, di);
bool drawn = false;
if (i >= dcs && i <= dce && !switched_to_alternate) {
if (prev_data)
path->AddLineToPoint(x, y);
path = &path2;
pcircles = &p2circles;
if (draw_circle || (!prev_data && ((i + 1) < pc) && !d->GetValuesTable().at(i + 1).IsData()))
pcircles->push_back(std::make_pair(x, y));
path->MoveToPoint(x, y);
switched_to_alternate = true;
drawn = true;
}
if (i >= dce && switched_to_alternate && !switched_back) {
if (prev_data)
path->AddLineToPoint(x, y);
std::vector<std::pair<double, double> > *p;
if (i == dce)
p = &p2circles;
else
p = &p1circles;
if (draw_circle || (!prev_data && ((i + 1) < pc) && !d->GetValuesTable().at(i + 1).IsData()))
p->push_back(std::make_pair(x, y));
path = &path1;
pcircles = &p1circles;
path->MoveToPoint(x, y);
switched_back = true;
drawn = true;
}
if (!drawn) {
if (prev_data)
path->AddLineToPoint(x, y);
else
path->MoveToPoint(x, y);
if (draw_circle || (!prev_data && ((i + 1) < pc) && !d->GetValuesTable().at(i + 1).IsData()))
pcircles->push_back(std::make_pair(x, y));
}
prev_data = true;
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:
注:本文中的wxGraphicsContext类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论