JPG-Bilder in Dialog anzeigen
-
danke für den tip
diesen beitrag muss ich wohl übersehen haben, werds gleich mal ausprobieren...
gruß thinux
-
hi (D)Evil,
ich habs nach dem beispiel probiert:
void CDialog1::OnOK() { #include "Picture.h" #include "afxwin.h" CPicture m_Picture; m_Picture.Load("C:\Test.JPG"); CPaintDC dc(this); m_Picture.UpdateSizeOnDC(&dc); m_Picture.Show(&dc, CPoint(0,0), CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0); m_Picture.Show(&dc, CRect(0,0,100,100)); m_Picture.ShowBitmapResource(&dc, IDC_BMP, CPoint(0,0)); }
aber irgendetwas stimmt da noch nicht. ich bekomme immer den "ERROR: Can Not Find The Bitmap Resource" obwohl die Datei "C:\Test.JPG" existiert
IDC_BMP = die ID von dem Picture Steuerelement, dass ich auf meinen dialog gezeichnet habe, das ist doch richtig so, oder?
vielen dank
mfg
thinux
-
So vielleicht:
.... Picture.Load("C:\\Test.JPG"); ....
-
ja, das hab ich auch erst gedacht, funktioniert aber trotzdem nicht.
der fehler liegt in der zeile:
m_Picture.ShowBitmapResource(&dc, IDC_BMP, CPoint(0,0));
übrigens das hier funktioniert:
CPicture m_Picture; m_Picture.Load("C:\Test.JPG"); CString S; S.Format("Size = %4d\nWidth = %4d\nHeight = %4d\nWeight = %4d\n", m_Picture.m_Weight, m_Picture.m_Width, m_Picture.m_Height, m_Picture.m_Weight); AfxMessageBox(S);
-
habs auch schon damit probiert:
CDC* pDC; m_Picture.UpdateSizeOnDC(pDC); m_Picture.Show(pDC, CPoint(0,0), CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0); m_Picture.Show(pDC, CRect(0,0,100,100)); m_Picture.ShowBitmapResource(pDC, IDC_BMP, CPoint(0,0));
denn es handelt sich hier um eine SDI, das bild soll jedoch auf einem dialog (seite eines TabCtrl) in einem bestimmten Picture Steuerelement zum Bearbeiten geöffnet werden.
hat jemand eine idee???
bin für alle tips dankbar.mfg thinux
-
Ich arbeite momentan mit der freien Bibliothek "DevIL". Kannst dir die ja auch mal anschauen
-
IDC_BMP = die ID von dem Picture Steuerelement, dass ich auf meinen dialog gezeichnet habe, das ist doch richtig so, oder?
Nein... wer lesen kann ist klar im Vorteil
m_Picture.Load(IDR_TEST, "JPG"); // Load From a Resource - Just Load It (Show Later)
You Must Include IDR_TEST In Your Resources Under a Custom Name, 4 Example - "JPG"Heißt soviel wie: "Du sollst das Bild als Resource Importieren...
evt. Reicht es, wenn de
m_Picture.ShowBitmapResource(&dc, IDC_BMP, CPoint(0,0));
weg lässt
-
...sicher! wer lesen kann... (wer alles lesen kann!)
--> da gibts auch noch ne 2.zeilehab das so versanden:
entweder:
m_Picture.Load("Test.JPG"); // Load From a File - Just Load It (Show Later)
zum laden einer datei
oder:
m_Picture.Load(IDR_TEST, "JPG"); // Load From a Resource - Just Load It (Show Later) // (U Must Include IDR_TEST In Your Resources Under a Custom Name, 4 Example - "JPG")
zum laden einer resource
ich möchte aber eine jpg-file direkt anzeigen und bearbeiten ohne über die resourcen gehen zu müssen
oder wie siehst du das???
gruß thinux
(ps. vielen dank für den tip mit "devil", werd mir das bei gelegenheit mal reinziehen)
-
edit: sry war falsch hier^^
-
gibts hier denn wirklich niemand, der weiß wie man ein JPG-Bild in einem Dialog anzeigen und bearbeiten kann ???
soo helft mir doch, bitte!!
mfg thinux
-
hmm.. also
CPicture m_Picture; m_Picture.Load("C:\Test.JPG"); CDC* pDC; // Hmm, jetzt hast de nen Pointer auf nen Device Context, der ins nirvaner zeigt... musste schon auf was zeigen lassen(achtung! musst de selber machen! habs so gelassen! m_Picture.UpdateSizeOnDC(pDC); m_Picture.Show(pDC, CPoint(0,0), CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0); m_Picture.Show(pDC, CRect(0,0,100,100));
Wenn de den Pointer net ins nirvaner Zeigen lässt, sollte es funzen... und pack das ganze in die OnPaint() (hat ein Dlg sowas, oder hieß das da anders?!), da bekommst de direkt nen Device Context Pointer überliefert...
-
erstmal vielen dank für deine hilfe.
so weit, so gut:
CPicture m_Picture; m_Picture.Load("C:\Test.JPG"); CDC* pDC = GetDC(); //oder --> CClientDC dc(this); m_Picture.UpdateSizeOnDC(pDC); m_Picture.Show(pDC, CPoint(0,0), CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0);
das klappt auch wunderbar.
--> aber wie muss ich das mit dem DC machen wenn ich will, dass das Bild in einem Rahmen (Picture Steuerelement) angezeigt wird?
zum beispiel: mein Steuerelement heißt "IDB_BMP"
mfg & bestem dank
thinux
-
ok, ich habs! hier noch mal für alle die auch mal vor dem Prob. stehn:
CPicture m_Picture; m_Picture.Load("C:\Test.JPG"); CDC* pDC = m_cPic.GetDC(); //m_cPic => ID vom Picture Steuerelement m_Picture.UpdateSizeOnDC(pDC); m_Picture.Show(pDC, CPoint(0,0), CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0);