Was ist ein HDC



  • Hallo, wollte mal was mit getpixel(); probieren.
    (http://msdn.microsoft.com/en-us/library/windows/desktop/dd144909(v=vs.85).aspx).
    Der will als Übergabewerte ein HDC haben was ist das? Dort ist die Bitmap gespeichert oder nicht? Wie schiebe ich den die Bitmap dahin und wie erstelle ich soetwas? Oder liege ich vollkommen falsch ^^?
    ps:Würde mich über eine Antwort freuen,ich habe win 7 und behersche nur reines c.



  • Schau mal diese Funktion: http://msdn.microsoft.com/en-us/library/windows/desktop/dd144871(v=vs.85).aspx

    Was du machen willst geht vermutlich auch ohne Bitmap.



  • Ein HDC (Handle Device Context) ist ein Kontext zu einem Gerät, wie z.B. einem Fenster. Während das Gerät die relevanten Daten beinhaltet, bietet der Kontext Mittel und Zustände an, um mit dem Gerät zu arbeiten (Bsp.: Blatt Papier = Fenster, Malkasten = Kontext).
    Um Zugriff auf die Daten einer HBITMAP zu erhalten, solltest du also einen Memory DC (kein zugeordnetes Gerät, bloß Speicher) erstellen, diesen die Bitmap zuweisen (die Bitmap ist nun das "Gerät") und darüber die Bilddaten abfragen.
    Eine Möglichkeit ist das Extrahieren einzelner Pixel über GetPixel, weit effizienter wäre allerdings GetDIBits.
    Lies dich mal hier durch.

    Bevor du weitere Fragen stellst, solltest du aber mal etwas Code zeigen. Es wird keiner Rätselraten wollen, wie deine Umstände sind.



  • Youka schrieb:

    Bevor du weitere Fragen stellst, solltest du aber mal etwas Code zeigen. Es wird keiner Rätselraten wollen, wie deine Umstände sind.

    👍

    Tatsächlich wird das Umfeld unzureichend erklärt.

    Wenn es eine Win32-Applikation sein sollte und Du auf ein Fenster zugreifen möchtest ist die Frage einfach:

    case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
    
            ...
    
            EndPaint(hWnd, &ps);
            break;
    

    Bei einer Konsolen-Applikation könnte man das im Speicher erledigen ohne was anzuzeigen.


Log in to reply