Bitmap auswählen und dann im Dialogfenster anzeigen lassen
-
peinlich aber war
es heisst natürlich "wahr"
-
Gut, du arbeitest also mit der Picture-Box. Jetzt könntest du eine WM_LBUTTONDOWN erstellen und dir dort die schon vorhandene CPoint-Variable zu nutzen machen um die Koordinaten herauszufinden !
Das würde dann so aussehen :CString strPos; strpos.Format("X-Koordinate = %d", point.x); AfxMessageBox(strPos); strPos.Format("Y-Koordinate = %d", point.y); AfxMessageBox(strPos);
Versuchs mal...
Gruß
:: NoName ::
-
Hi
Ich habe es versucht mit diesem Code:
CFileDialog dlg(true,"",NULL,OFN_HIDEREADONLY,"Bitmap (*.bmp)|*.bmp||"); if(dlg.DoModal() == TRUE) { CWnd* pWnd = (CWnd*) GetDlgItem(IDC_STATIC); CDC* pDC = pWnd->GetDC(); CBitmap bitmap; CDC dc; CRect rect; pWnd->GetClientRect(rect); BITMAP bm; HBITMAP hPixel = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), dlg.GetFileName(), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); bitmap.Attach(hPixel); bitmap.GetBitmap(&bm); dc.CreateCompatibleDC(pDC); dc.SelectObject(bitmap); pDC->StretchBlt(0,0,rect.Width(), rect.Height(),&dc,0,0, bm.bmWidth, bm.bmHeight, SRCCOPY); }
Ich kann es ohne Probleme kopilieren aber beim ausführen gibt es in der 5. Zeile einen Fehler....
Bitte helft mir
Vielen Dank!
-
Hmm, zeichnest du das Bild denn auch in einer Picture-Box ?
Wenn ja, wie ist die ID deiner Picture Box ?
-
kurze frage zwischendurch,
TaccoGo schrieb:
bmp.LoadBitmap("c:\\test.bmb") ...
wie kann ich einem so geladenem Bitmap eine ID bzw einen namen zuweisen, damit man es auch in der CBitmapButton::LoadBitmaps methode nuten/übergeben kann?
-
Hast du schonmal versucht nur die CBitmap Variable zu benutzen ?
Ungefähr so:
CBitmap bitmap; bitmap.LoadBitmap("C:\\Text.bmp"); m_Button.LoadBitmaps(bitmap,...);
Vielleicht klappt es !
Gruß
:: NoName ::
-
Ja ich benutze eine Picturebox!
Diese hat die ID:IDC_STATICIch möchte dann später das ganze noch abändern, dass ich das Bild drucken kann... Ist dies auch möglich oder muss ich das ganze dann anders angehen?
-
Ich habe noch diese Methode probiert:
BITMAP bmpInfo; bmp.GetBitmap(&bmpInfo); CDC dcMemory; dcMemory.CreateCompatibleDC(dc); CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp); CRect rect; GetClientRect(&rect); int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2; int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2; pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY); dcMemory.SelectObject(pOldBitmap);
aber es kommt immer ein Fehler bei dieser Zeile:
dcMemory.CreateCompatibleDC(dc);
Sehe ich es richtig, dass ich mit dieser Fukntion dann das Bild auch gerade ausdrucken könnte? einfach dem Objekt
CClientDC dc(this);
anstatt this den Printer übergeben?
Vielen Dank für die Antworten
-
Ich habe nun noch weiterversucht und es geschafft!
Jetzt kommt keine Fehlermeldung aber es wird nur ein schwarzer Balken gedruckt.Kann mir jemand sagen wieso?
void CADS2Dlg::Logos(CDC* dcPrint) { CBitmap bmp; bmp.LoadBitmap("E:\logos\logos\Logo_1gp.tif"); CDC dcMemory; dcMemory.CreateCompatibleDC(dcPrint); CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp); CRect rect; GetClientRect(&rect); dcPrint->BitBlt(10,10,100,50,&dcMemory,0,0,SRCCOPY); dcMemory.SelectObject(pOldBitmap); }
Vielen Dank für die Antworten
-
:: NoName :: schrieb:
Hast du schonmal versucht nur die CBitmap Variable zu benutzen ?
Ungefähr so:
CBitmap bitmap; bitmap.LoadBitmap("C:\\Text.bmp"); m_Button.LoadBitmaps(bitmap,...);
Vielleicht klappt es !
Gruß
:: NoName ::nope, geht nicht! ich meine, es steht ja auch nicht in der doku... vorschläge...
-
Hallo nochmal!
Ich hab nun das:
CString strPos; strPos.Format("X-Koordinate = %d \nY-Koordinate = %d", point.x,point.y); AfxMessageBox(strPos);
noch eingefügt, funktioniert auch.
Blöd ist nur, dass die Pixelinformationen vom Dialog gezeigt werden, nicht von der Picture-Box.
Ist es irgendwie möglich einen sichtbaren Rahmen über die Picturebox zu ziehen, oder einen sichtbaren Punkt zu setzen bis zur Bestätigung? (damit der User nicht an die falsche Stelle klickt.... ) (es ist relativ wichtig)
-
Irgendwie lädt es das Bild bei mir nicht (externe)
Wenn ich ein Ressourcenbild drucken will, geht es ohne Probleme....
Wieso geht es mit den externen nicht? Wird einfach ein schwarzer Balken gedruckt! Wie könnte ich jpg-Bilder laden?Hier meine Fukntion:
{ int m_iHorizont = dcPrint->GetDeviceCaps(HORZRES); int m_iVerdikal = dcPrint->GetDeviceCaps(VERTRES); int m_iLeft=25; // mm int m_iTop=95; // mm CBitmap bmp; CBitmap bild; bmp.LoadBitmap(IDB_BITMAP1); CDC SpeicherDC; SpeicherDC.CreateCompatibleDC(dcPrint); SpeicherDC.SelectObject( &bmp ); dcPrint->StretchBlt( ((m_iHorizont/210) * m_iLeft), ((m_iVerdikal/297) * m_iTop), ((m_iHorizont/210) * 52), ((m_iVerdikal/297) * 8), &SpeicherDC, 0, 0, 541, 83, SRCCOPY ); }
Wäre echt froh, wenn mir jemand helfen könnte!
VIELEN DANK!
-
@Nicophi
Einen Rahmen kannst du bei den Styles einstellen !
Um Jpg's laden zu können musst du dir mal das anschauen :
http://www.codeproject.com/bitmap/pictureshow.asp
oder du machst es mit CPicture, ein beispiel gibt's hier:
http://msdn.microsoft.com/msdnmag/issues/01/10/c/
Hoffe konnte euch helfen !
Gruß
:: NoName ::
-
Um JPG's zu laden würde ich die Klasse CImage empfehlen, alles weitere findeste in deiner örtlichen MSDN ^^