Problem mit großen CBitmaps
-
Hi!
Ich versuche gerade mit VC++ 6.0 und den MFC eine Art Bildbetrachter zu programmieren, mit dem ich innerhalb eines Fotos von einer Digitalkamera messen kann wie weit 2 Punkte auseinander liegen. Dazu erstelle ich für das Originalfoto ein CBitmap in der entsprechenden Größe des Fotos. Mit StretchBlt zeige ich das Bild dann an, so kann man das Bild auch zoomen.
Das Messen wird mit einfachen Linien durchgeführt, die ich in ein CBitmap zeichne, dieses CBitmap erstelle ich entsprechend der aktuellen Zoomstufe größer oder kleiner als das Originalfoto, damit die Linien immer 1 Pixel breit sind.
Dabei ist mir aufgefallen, dass ich CBitmap-Objekte nicht in beliebiger Größe erstellen kann, weil CreateBitmap und CreateCompatibleBitmap dann fehlschlagen und einen Fehler zurückgeben - Return-Wert 0. Auch wenn ich versuche ein sehr großes Bild zu laden (bspw. 12000 x 6000 x 32 Bit) kann ich kein entsprechnd großes Bitmap erstellen. Das Bild in mehrere Bitmaps aufteilen funktioniert auch nicht, da ich auch nicht zwei Bitmaps erstellen kann, die zusammen 12000 x 6000 x 32 Bit groß sind.Warum das so ist habe ich schon durch Google herausgefunden, jedoch habe ich noch keinen Weg gefunden, wie ich das Problem umgehen kann. Irgendwie muss das ja möglich sein. Desweiteren frage ich mich ob das mit dem großen Bitmap für die Linien überhaupt nötig ist, ich denke das müsste auch irgendwie anders zu realisieren sein. Ich habe schon versucht, das Linien-Bitmap nur so groß wie der Anzeigebreich aktuell ist zu erstellen, da bekomme ich aber Geschwindigkeitsprobleme, da ich dann die Linien beim Verschieben des Bildes immer erst neuzeichnen muss.
Nochmal zusammengefasst:
1. Wie kann man große Bilder laden und darstellen?
2. Wie kann ich ressourcenschonend Linien über dieses Bild legen? Man kennt das ja aus anderen Bildbetrachtern wie Xnview, da kann man zum Beispiel ein Auswahlrechteck über das Bild legen. Wie realisieren die das?Schon mal vielen Dank für die Mühe, meine Probleme zu lesen.
Gruß Christian