*
bool Bar::draw(Gdiplus::Graphics* graphics)
{
if (graphics == NULL)
return false;
Gdiplus::SolidBrush brush_bar(Gdiplus::Color(173, 222, 107));
Gdiplus::SolidBrush brush_caption(Gdiplus::Color(122, 160, 84));
Gdiplus::StringFormat stringFormat;
stringFormat.SetAlignment(Gdiplus::StringAlignmentNear);
stringFormat.SetLineAlignment(Gdiplus::StringAlignmentCenter);
LONG bar_width = min(static_cast<LONG>((m_rect.right - m_rect.left - m_items.size() * 2) / m_items.size()), 20);
for (std::size_t bar = 0; bar < m_items.size(); ++bar)
{
LONG height = ((m_rect.bottom - m_rect.top) / 100) * m_items[bar].first;
Gdiplus::RectF rect(static_cast<Gdiplus::REAL>(m_rect.left + static_cast<LONG>(bar) * (bar_width + 2)), static_cast<Gdiplus::REAL>(m_rect.bottom - height), static_cast<Gdiplus::REAL>(bar_width + 2), static_cast<Gdiplus::REAL>(height));
graphics->FillRectangle(&brush_bar, rect);
graphics->TranslateTransform(static_cast<Gdiplus::REAL>(m_rect.left + static_cast<LONG>(bar) * (bar_width + 2) + (bar_width + 2)), static_cast<Gdiplus::REAL>(m_rect.bottom - height + height - m_items[bar].second.second));
graphics->RotateTransform(90.0f);
graphics->DrawString(m_items[bar].second.first.c_str(), -1, &m_fontControl, Gdiplus::PointF(0.0f, 0.0f), &brush_caption);
graphics->ResetTransform();
}
return true;
}
... ist zwar falsch herum ... aber nja