C++ png format

Diskutiere C++ png format im Developer Network Forum im Bereich Hardware & Software Forum; Hallo, ich bräuchte einen Tip, wie man einen Fensterinhalt aus der Klasse CDC in eine PNG Datei speichern kann.
  • C++ png format Beitrag #1
B

bluescreen99

Bekanntes Mitglied
Dabei seit
31.08.2001
Beiträge
107
Reaktionspunkte
0
Hallo, ich bräuchte einen Tip, wie man einen Fensterinhalt aus der Klasse CDC in eine PNG Datei speichern kann.
 
  • C++ png format Beitrag #3
B

bluescreen99

Bekanntes Mitglied
Dabei seit
31.08.2001
Beiträge
107
Reaktionspunkte
0
Die CImage Klasse ist wohl in ATL untergeordnet. Wie bekomme ich ATL in mein Projekt????
 
  • C++ png format Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
  • C++ png format Beitrag #5
B

bluescreen99

Bekanntes Mitglied
Dabei seit
31.08.2001
Beiträge
107
Reaktionspunkte
0
Hallo UNIMATRIXZERO, erstmal vielen Dank für die Hilfe. Wie schon gesagt, ich will nur eienen Fensterinhalt als png speichern. Dafür brauche ich doch eigentlich keine mächtige Lib ala cximage.

Leider bekomme ich das mit ATL nicht gebacken. z.B. finde ich keine atlimage.h. Ein Bekannter erzählte mir, man müsse ATL ähnlich wie COM erstmal im MFC "registrieren", konnte mir aber auch nicht weiterhelfen. Wäre nett, wenn Du oder jemand hier sich noch zu einem Tipp dazu herablässt.
 
  • C++ png format Beitrag #6
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Hab das eben mal probiert (MFC-Dialog mit Visual C++ .Net 2003) und ich konnte die Header ohne Probleme einbinden
Code:
#include "afxwin.h"
#include "atlimage.h"

Der folgende Code speichert den aktuellen Fensterinhalt nach c:\test.png
Code:
void CAtlImageMfcDlg::OnBnClickedSave()
{
	CRect	r;
	GetClientRect(r);

	CImage	image;
	image.Create(r.Width(), r.Height(), 32);
	
	CDC		*cdc = GetDC();
	CDC		*idc = CDC::FromHandle(image.GetDC());

	idc->BitBlt(0, 0, r.Width(), r.Height(), cdc, 0, 0, SRCCOPY);
	image.ReleaseDC();

	image.Save("c:\\test.png");
}
 
  • C++ png format Beitrag #7
B

bluescreen99

Bekanntes Mitglied
Dabei seit
31.08.2001
Beiträge
107
Reaktionspunkte
0
Bei mir gibt es leider den atlimage.h nicht. (VC++ 6.0).
 
  • C++ png format Beitrag #8
B

bluescreen99

Bekanntes Mitglied
Dabei seit
31.08.2001
Beiträge
107
Reaktionspunkte
0
Vielleicht könntest Du mir bitte dazu ein kleines Bespiel mit der cximage lib geben:help:
 
  • C++ png format Beitrag #9
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Dasselbe Beispiel sieht mit CxImage in etwa so aus. Evtl. mußt Du noch ein paar Resourcen wieder freigeben.

Code:
#include "CxImage\xImage.h"

void CCxImagePngTestDlg::OnTest() 
{
	CRect	r;
	GetClientRect(r);

	CDC		*cdc = GetDC();

	CBitmap	bm;
	bm.CreateCompatibleBitmap(cdc, r.Width(), r.Height());

	CDC			bmdc;
	bmdc.CreateCompatibleDC(cdc);
	bmdc.SelectObject(bm);
	bmdc.BitBlt(0, 0, r.Width(), r.Height(), cdc, 0, 0, SRCCOPY);

	CxImage	image;
	image.CreateFromHBITMAP(bm);

	image.Save("c:\\test.png", CXIMAGE_FORMAT_PNG);
}

Bei der CxImage-Library ist ein MSVC-Projekt mit dabei, sodaß Du die notwendigen Libs einfach erzeugen können solltest. Sonst schreib mir einfach eine PM und ich schick Dir die Libs.
 
  • C++ png format Beitrag #10
B

bluescreen99

Bekanntes Mitglied
Dabei seit
31.08.2001
Beiträge
107
Reaktionspunkte
0
Danke, für die Tipps. Jetzt funktioniert zumindest der erste Teil. Das 2.Problem ist das Speichern eines Ausdrucks. Da die Druckaufbereitung mittels MM_TWIPS gemacht wird hilft die Konvertierung nach MM_TEXT nicht viel......
 
Thema:

C++ png format

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.181
Beiträge
1.579.175
Mitglieder
55.880
Neuestes Mitglied
Hahn
Oben