Zum Inhalt springen

Grafikbereich in ein Formular einfügen


Empfohlene Beiträge

Hallo,

ich hab mir ein kleines Mathe-Programm geschrieben, und möchte nun einen Funktionsplot realisieren.

Wie ich auf ein CView zeichnen kann, weiß ich.

Aber wie kann ich auf ein CFormView zeichnen? Kann man eine CView in eine CFormView als eine Art Steuerelement "einbauen"

:confused:

Bitte helft mir weiter!

Grüße,

Technician

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Original geschrieben von Guybrush Threepwood

Da CFormView von CView abgeleitet ist, müßtest du doch auch bei CFormView

in der OnDraw() Methode zeichnen können. Oder nicht?

ja, natürlich ginge das.

Aaaaber:

müsste ich mich dann nicht um das Zeichnen der ganzen Steuerelemente auch selbst kümmern, wenn ich OnPaint() überschreibe?! :confused:

Gruß,

Technician

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich hab das jetzt mal ausprobiert, und es ist folgendes passiert:

nachdem ich OnDraw überschrieben habe, werden zwar die Steuerelemente automatisch wie zuvor gezeichnet - aber das, was ich selber zeichnen will, erscheint nicht auf der Form :(

OnDraw wird allerdings aufgerufen (ich hab das mit der MessageBox getestet).

hier der code:


void COnpaintView::OnDraw(CDC *pDC)

{


	//AfxMessageBox("painting!");



//Device Context zum Zeichnen

	CPaintDC dc(this);



	//Ausgabe Zähler und Bezeichnung

	dc.TextOut(270, 20, "ROT");



		//Pinsel zum Zeichnen erzeugen

	CBrush meinPinsel(RGB(20, 255, 30));


	//Pinsel in Gerätekontext laden

	dc.SelectObject(meinPinsel);



		//kreis zeichnen

		dc.Ellipse(100, 50, 50, 100);


	//standardpinsel in gerätekontext laden

	dc.SelectStockObject(WHITE_BRUSH);



}


Link zu diesem Kommentar
Auf anderen Seiten teilen

habe gerade meinen fehler selber bemerkt *grummel*

ich sollte vielleicht doch besser den gerätekontext verwenden, der als parameter übergeben wird

:rolleyes:


void COnpaintView::OnDraw(CDC *pDC)

{


	//Ausgabe Zähler und Bezeichnung

	pDC->TextOut(270, 20, "ROT");


}


statt


void COnpaintView::OnDraw(CDC *pDC)

{



//Device Context zum Zeichnen

	CPaintDC dc(this);



	//Ausgabe Zähler und Bezeichnung

	dc.TextOut(270, 20, "ROT");


}

und jetzt funktioniert's auch ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich hab mir einen kleinen Funktionsplotter geschrieben, und möchte den Funktionsgraph nun als Bitmap abspeichern können.

Hier seht ihr, wie ich das Zeichnen des Graphen (bisher) gelöst habe.

Der Graph wird einfach auf die CFormView (auf der auch Steuerelemente drauf sind) gezeichnet.

Wie mache ich das nun mit dem Speichern? Ich glaub, das kann ich dann nicht so einfach machen, oder?! :confused:

Muss ich mich dafür mit GDI (kenn ich nur vom hören-sagen) beschäftigen

:confused:

Bitte helft mir weiter,

Technician

Link zu diesem Kommentar
Auf anderen Seiten teilen

das ist nicht so ganz das wahre...

erstens:

"You should note that if the window is partially or completely covered by other windows then the saved bitmap will show parts of these other windows too. " :(

zweitens:

wenn ich das ganze compilieren will, dann erhalte ich bei DDBToDIB() und WriteDIB() "nichtdeklarierter Bezeichner" :(

außerdem möchte ich ja gar nicht einen Screenshot machen (das macht dieser Code wohl), sondern nur diesen bestimmten Bereich wegspeichern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die beiden Funktionen gibt`s auch bei Codeguru, die sind vom selbem Autor:

WriteDIB

DDBToDIB

Ich hab mal kurz durch den Artikel gelesen, aber ich kann mir das irgendwie

nicht vorstellen warum die Teile von Fenstern die das Bild überdecken in der

Datei mitgespeichert werden.

Weil man übergibt der Funktion ja nur das was auch in dem Fenster

dargestellt wird:confused:

Aber wenns da steht wird`s wohl stimmen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...