GDI+ DrawImage malt wo es nicht soll!
-
Hmm ... also das Problem was hier auftritt ist, das obwohl Koordinaten für die Bitmap pPercentBitmapPart angegeben wurden der die einfach an die Stelle 0, 0 setzt. Jemand ne Idee?
Hier der Code:
Gdiplus::Pen pen(Gdiplus::Color(128, 128, 128)); /************************************************************************/ /* Draw percent bar edges */ /************************************************************************/ pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 - 55, rect.bottom - 30, (rect.right - rect.left) / 2 - 51, rect.bottom - 30); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 - 50, rect.bottom - 35, (rect.right - rect.left) / 2 - 50, rect.bottom - 31); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 + 55, rect.bottom - 30, (rect.right - rect.left) / 2 + 51, rect.bottom - 30); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 + 50, rect.bottom - 35, (rect.right - rect.left) / 2 + 50, rect.bottom - 31); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 + 55, rect.bottom - 20, (rect.right - rect.left) / 2 + 51, rect.bottom - 20); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 + 50, rect.bottom - 15, (rect.right - rect.left) / 2 + 50, rect.bottom - 19); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 - 55, rect.bottom - 20, (rect.right - rect.left) / 2 - 51, rect.bottom - 20); pMemGraphics->DrawLine(&pen, (rect.right - rect.left) / 2 - 50, rect.bottom - 15, (rect.right - rect.left) / 2 - 50, rect.bottom - 19); /************************************************************************/ brush.SetColor(Gdiplus::Color(255, 255, 255)); Gdiplus::Bitmap* pMemBitmapPercent = new Gdiplus::Bitmap(114, 10); Gdiplus::Graphics* pMemGraphicsPercent = Gdiplus::Graphics::FromImage(pMemBitmap); for (unsigned short percent = 0; percent < (100 / 7); ++percent) { Gdiplus::GraphicsPath* path = new Gdiplus::GraphicsPath; path->AddLine((percent * 7) + 10, 0, (percent * 7) + 5, 0); // top right => top left path->AddLine((percent * 7) + 10 + 5, 0, (percent * 7) + 5, 9); // top right => bottom right path->AddLine((percent * 7) + 5, 9, (percent * 7), 9); // bottom right => bottom left path->AddLine((percent * 7) + 10, 0, (percent * 7), 9); // bottom left => top left pMemGraphicsPercent->FillPath(&brush, path); delete path; } Gdiplus::Rect percent_rect(4, 0, min(m_percent, 100), 10); Gdiplus::Bitmap* pPercentBitmapPart = pMemBitmapPercent->Clone(percent_rect, PixelFormatDontCare); pMemGraphics->DrawImage(pPercentBitmapPart, (rect.right - rect.left) / 2 - 50, rect.bottom - 29); delete pMemGraphicsPercent; delete pMemBitmapPercent; graphics.DrawImage(pMemBitmap, 0, 0); delete pMemBitmap; delete pMemGraphics;
... ok der Code istnoch nicht optimiert aber das ist ja auch nicht der Punkt
-
Achja ... wenn fragen zum Code sind stellt sie einfach ... mir ist nur wichtig zu wissen warum DrawImage das Bild nicht an die angegebene Stelle setzt
-
Och meno der Code ist doch leicht verständlich und schön strukturiert ... hat keiner ne Idee warum DrawImage so falsch funktioniert?
-
Armer (D)Evil
-
Hm, haste mal im Debugger geguckt und die Werte verfolgt?
-
Ja sind alle korrekt ... selbst wenn ich beim DrawImage feste Werte eingebe setzt er die Prozent-Leiste auf 0, 0
-
War nur nen Tippfehler ... der Code ist sonnst vollkommen korrekt Ich depp ...
pMemBitmapPercent muss es auch beim erstellen vom pMemGraphicsPercent heißen ^^