Noch mal Image verschieben



  • HDC hDC = ...; // z.B. mit BeginPaint
    HDC hDC2 = CreateCompatibleDC(hDC);
    HBITMAP hBM = CreateCompatibleBitmap(hDC, cxClient, cyClient);
    SelectObject(hDC2, hBM);

    // Zeichenoperationen auf hDC2...

    BitBlt(hDC, 0, 0, cxClient, cyClient, hDC2, 0, 0, SRCCOPY);
    // Ein SelectObject(OldBitmap); ist imho nicht nötig
    DeleteObject(hBitmap);
    DeleteDC(hDC2);

    NAch meiner anfrage auf eine Lösung des Problems des Hackel beim bewegen von Images während der Laufzeit wurde ich zu diesem Quelltext verlinkt.

    Dazu jetzt eine Frage: Wo muss ich den hin schreiben. Falls es als Information wichtig sein sollte, das Bild wird mit der OnKey Funktion bewegt. Kann mir also bitte jemand sagen an welcher stelle ich den Code einfügen muss?



  • Ich würd mal sagen in WM_PAINT, denn in der ersten Zeile steht "... mit BeginPaint"

    cu



  • Erst mal Danke für deine Antwort.

    Ich bin noch ein relativer Anfänger in C++. Kannst du mir sagen was bzw. wo WM_Paint ist. Also ich weis nicht ob das von bedeutung ist aber ich ich schreibe mal auf, wie das bis jetzt bei mir funktioniert. Ich habe auf meiner Form eine Image liegen welche über die On Key Funktion der Form mit den Cursortasten bewegt wird. Wie gesagt mein Problem ist das das Bild beim bewegen ruckelt und von Streifen durchzogen wird. Als Lösung dafür habe ich den oben Angezeigten Code bekommen, weis aber leider nich wie er zu benutzen ist. Wie gesagt müsste ich wissen wo diese On_Paint Funktion zu finden ist.



  • Wie groß ist dein Bild? Große Bilder kann mit der WinAPI allein auch nicht ohne Ruckeln/Flackern bewegen.

    Wenn du den Code außerhalb des MessageHandlers (daher WM_PAINT) verwenden willst, musst du GetDC bzw. ReleaseDC verwenden.

    M.T.

    [ Dieser Beitrag wurde am 12.12.2002 um 17:11 Uhr von Manuel editiert. ]



  • Mein Bild ist ca. 10-15 MB groß (kein Scherz) soll auch so sein.

    Was ist GetDC bezw ReleaseDC? Tut mir leid, wie ich schon sagte bin noch ein Anfänger.



  • Ich meine es echt nicht böse:
    Lern erstmal ein paar Grundlagen. Ohne Grundlagen kommt man nicht weit, in der Windowsprogrammierung schon gar nicht.
    Kauf dir am besten ein gutes Buch über Windowsprogrammierung.

    btw:
    Du redest von "OnKey" und "OnPaint". Benutzt du microsoft visual C++ oder den Borland Builder? Dafür gibts nämlich extra Foren.
    Mit diesen klassenbibliotheken ist es wahrscheinlich einfacher als in reiner WinAPI.
    Aber glaub mir: Wenn du nur Dialoge und Fenster zusammenklicken kannst, wirst du spätestens nach einigen Monaten merken, dass das eigentlich nicht viel bringt ohne Grundlagen.



  • Mir klar das du es nicht böse meinst.

    Bei dem Punkt mit dem nicht weiterkommen binn ich schon lange angekommen. Ich habe mir mitlerweile schon vier Bücher für C++ gekauft, aber wirklich weitergeholfen haben die mir nicht. Das kann selbstverständlich auch an mir liegen, da ich mir vielleicht etwas anderes erwarte. Welches Buch würdest du mir denn empfehlen?

    PS.: Ich benutze den Borland C++Builder.


Anmelden zum Antworten