000
11.10.2005, 21:56 Uhr
ssd
|
Hallo Forum
Zur Zeit beschäftige ich mich mit der Gdi+. So weit funktioniert auch alles, nur habe ich Probleme mit dem neuzeichnen der Grafik, sobald dies nötig ist. Was muss ich bei der OnPaint Funktion (Dialog) eintragen, so dass es mir das Bitmap, welches vorher in ein Bitmap gesichert wurde, auch aus dem Cache ausliest ? Meine derzeitige Methode, ein Bild zu "speichern", mache ich so. Dies ist aber nicht die optimale Lösung, die Datei wird immer neu ausgelesen. Am besten wäre nach mir schon die CachedBitmap-Funktion die Lösung...nur wie ?
dss
Code Bild zeichnen und sichern:
void CSpirograph25Dlg::OnButtonZeichnen() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
CClientDC* pDC=new CClientDC(this); GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); Graphics graphics(pDC->m_hDC); Pen MyPen(Color(255, 255, 64,0)); // A green pen, with full alpha Metafile metafile(L"SampleMetafile.emf",pDC->m_hDC); {
graphics.DrawLine(&MyPen, 0, 0, 200, 100); graphics.DrawRectangle(&MyPen, 0, 0, 200, 100); Graphics graphics(&metafile);
graphics.DrawLine(&MyPen, 0, 0, 200, 100); graphics.DrawRectangle(&MyPen, 0, 0, 200, 100); } Invalidate(FALSE); }
und im OnPaint:
... else { CDialog::OnPaint();
//CClientDC* pDC=new CClientDC(this); Metafile metafile(L"SampleMetafile.emf"); Graphics playbackGraphics(dc.m_hDC); playbackGraphics.DrawImage(&metafile, -12, -12); } |