Temporär GUI-Element ablage
-
Hi,
ich möchte gerne einige grafische Objecte zwischenspeichern um sie beim späteren verwenden leicher und vorallem schneller wieder aufrufen zu können.Ich lade einzelne "Bilder" aus einem eigenen Dateiformat.
Anschließend male ich mit SetPixel, in ein mit CreateCompatibleDC erzeugtes DC, das "Bild" hinein.
Nun möchte ich das "Bild" anschließend mit StretchBlt wieder in das eigentlichen Fensters hineinschreiben. Leider gibt es aber dort keine Ausgabe.Woran könnte das liegen?
Ps. SourceCode kann ich posten fals er benötigt wird.
Mfg. Matyro
-
Malst du die Bilder beide Male genau gleich ?
WIE malst du sie überhaupt ?
-
Also ich zeichne das Bild in den Temporären HDC mit der SetPixel funktion
m_vec ist ein stl vektor und beinhaltet die Pixelfarbenbool Load::draw(HDC p_hDC) { if(m_havePicture) { for(int y=1;y<m_cy;y++) { for(int x=1;x<m_cx;x++) { if(! (m_vec.at((y-1)*m_cx+(x-1)) == RGB(255,255,255))) { SetPixel(p_hDC, x+m_start.x, y+m_start.y, m_vec.at((y-1)*m_cx+(x-1))); } } } return true; } return false; }Anschließend soll er in ein anderes HDC (das vom Hauptfenster) hineinzeichnen:
void Load::simpleDraw(HDC p_hDC, RECT p_readRect, RECT p_writeRect) { if(m_dc==0) { m_dc=CreateCompatibleDC(p_hDC); Load::draw(m_dc); } StretchBlt(p_hDC, p_writeRect.left, p_writeRect.top, p_writeRect.right, p_writeRect.bottom, m_dc, p_readRect.left, p_readRect.top, p_readRect.right, p_readRect.bottom, SRCCOPY); }
-
hast du dir mal das temporäre hdc angeschaut, ob da wirklich das bild drin ist, wie du es dir vorstellst?
greetz KN4CK3R
-
Schneller ist es vermutlich eine Bitmap mit einem eigenen Datenaray aufzubauen, als SetPixel zu verwenden. Diese Bitmap kannst Du dann auch behalten und verwenden wo auch immer Du willst.
-
Nachgeschaut habe ich nicht,
also ist der einzigste Vorschlag eine Temporäre Bitmap zu machen?