Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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);



}


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 ;)

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

Original geschrieben von Guybrush Threepwood

Hi,

du hast dich glaube ich verklickt:D

ja, das hab ich *ans-hirn-fass*

Original geschrieben von Guybrush Threepwood

Zu deinem Problem hab ich mal was bei Codeguru gesehen,

vielleicht hilfts dir ja.

thank you - werd ich mir gleich mal reinziehen :)

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.

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.