# 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 ^^