CBitmap vom Bildschirm holen (abgetrennt)
-
[Mod-Edit] Der Beitrag wurd aus einem anderen Thread rausgelöst - das Thema begann mit:
metaljack schrieb:
dann hätt ich mal noch ne frage:
ist es möglich ein angezeigtes bild(Bitmap) in ein CBitmap zu bekommen? quasi um "life" die Bilddaten auszulesen.
CStoll schrieb:
Ja, indem du dir einen CDC des Bildschirms holst und dann per GetCurrentBitmap() an die Bitmap-Daten gelangst.
(ohne Garantie)[/Mod-Edit]
das bekommsch irgendwie nich hin.
kannst du bitte mal ein beispiel schreiben.
sagen wir das angezeigte bild hat die ID: IDC_PIC
und jetz hätt ich das gern in der variable bmp vom typ CBitmap
-
Steht das Bild mit dieser ID in deinen Ressourcen? Dann brauchst du noch nichtmal den Bildschirm, um es verarbeiten zu können - CBitmap::LoadBitmap() holt dir das Bild aus den Recourcen.
(den Umweg über den CDC benötigst du nur, wenn du z.B. dein Dialogfenster von Hand gemalt hast und z.B. als Bitmap speichern willst)
PS: Mit den Details habe ich mich noch nicht beschäftigt, also konsultierst du besser die MSDN (oder wartest auf einen Experten).
-
leider ist das bild nicht in den ressourcen. das wären einfach zu viele.
aber die werden halt so nach und nach in einem bildelement angezeigt. nun will ich genau dieses abscannen.
könnte dann auch später mal was selbst gemaltes sein. oder vielleicht sogar ein animationselement.Die Frage ist halt nur wie ich genau das eine element als cbitmap bekomme.
Die hoffnung stirbt zuletzt. und im msdn finde ich auch irgendwie nix mehr.
-
Dann warte mal einen Moment - hier tummeln sich auch ein paar Experten, die sich besser mit dem System auskennen sollten.
(PS: Da deine Frage recht wenig mit dem ursprünglichen Problem zu tun hat, trenne ich sie mal ab)
-
also ich glaub ich komm dem ganzen langsam näher.
ich hab jetz folgendes versucht:
CBitmap bmp; HBITMAP hbmp; BITMAP bmpl; hbmp=m_ctlPicture.GetBitmap(); if(hbmp==NULL) MessageBox("failed"); bmp.Attach(hbmp); //ab hier funktioniert das ganze - das ist sicher bmp.GetBitmap(&bmpl); BYTE* help=new BYTE[...]; DWORD test=bmp.GetBitmapBits(...,help);zuerst habe ich es mit mbp.FromHandle probiert aber da bringt er mir ne fehler meldung.
mit Attach bekomm ich allerdings überall den Pixelwert 40(also R=G=B=40) was gutgehend schwarz ist.weiß irgendjemand weiter?
oder vielleicht noch ein anderer ansatz:
kann man ein element in eine bitmap-ressource bekommen? dann würde es ja auch funktionieren.
-
ja ich häng immernoch an dem problem. und ich bin nicht gewillt das einfach so fallen zu lassen nur weils nich gleich funktioniert.
ich hab da mal noch was gefunden.
http://www.cppfrance.com/code.aspx?id=11139wenn ich den funktionsnamen richtig verstehe wird da aus einem handle eines windows ein bmp file gemacht. das wäre ja soweit fast genau das was ich brauche jedoch mit der einschränkung dass ich nur das eines elementes brauch.
jetz stelle ich mir das so vor, dass ich mir quasi das handle von dem bildelement als hwnd hole und dieses dann irgendwie in ein bitmap bzw cbitmap bekommen.die frage is nur wie? ich hoffe es weiß jemand!!?
metaljack