Benutzer mit den meisten Antworten
CPaintDC Farbe setzen

Frage
-
Hallo,
wie kann die Farbe für LineTo und Rectangle setzen ?
Ich habe es mit SetDCBrushColor und SetDCPenColor versucht, aber ich bekomme nur schwarze Linien und ein weißes Rechteck.
Gruß
Thorsten
- Bearbeitet Robert BreitenhoferModerator Dienstag, 27. Juli 2010 11:41 Titel Korrektur
Antworten
-
- Als Antwort vorgeschlagen Martin RichterModerator Dienstag, 20. Juli 2010 06:06
- Als Antwort markiert Thorsten Kiefer Dienstag, 20. Juli 2010 14:56
-
Das sollte etwa so aussehen:
CPaintDC dc(this); // device context for painting CBrush brush; CPen pen; ... brush.CreateSolidBrush(0x0000FF00); // green brush pen.CreatePen(PS_SOLID , 0x000000FF); // red pen dc.SelectObject(brush); dc.SelectObject(pen); ... dc.Rectangle(10,10,20,20); // Rechteck mit rotem Rahmen und grüner Füllung
- Als Antwort vorgeschlagen Martin RichterModerator Dienstag, 20. Juli 2010 06:06
- Als Antwort markiert Thorsten Kiefer Dienstag, 20. Juli 2010 14:56
Alle Antworten
-
- Als Antwort vorgeschlagen Martin RichterModerator Dienstag, 20. Juli 2010 06:06
- Als Antwort markiert Thorsten Kiefer Dienstag, 20. Juli 2010 14:56
-
Das sollte etwa so aussehen:
CPaintDC dc(this); // device context for painting CBrush brush; CPen pen; ... brush.CreateSolidBrush(0x0000FF00); // green brush pen.CreatePen(PS_SOLID , 0x000000FF); // red pen dc.SelectObject(brush); dc.SelectObject(pen); ... dc.Rectangle(10,10,20,20); // Rechteck mit rotem Rahmen und grüner Füllung
- Als Antwort vorgeschlagen Martin RichterModerator Dienstag, 20. Juli 2010 06:06
- Als Antwort markiert Thorsten Kiefer Dienstag, 20. Juli 2010 14:56
-
Hallo Forum Es gibt sie noch ... die Fragen im Forum, dich ICH auch beantworten könnte ;-) Eines möchte ich jedoch noch hinzufügen: Wenn das Programm auch unter Win95, Win98 oder WinME laufen sollte, dann bitte in jeder Funktion am Ende wieder alles restaurieren, also: void func(CDC *pDC) { CPen DrawPen(PS_SOLID,1,RGB(255,128,128)); CPen *pOldPen = pDC->SelectObject(&DrawPen); .... pDC->MoveTo(0,0); pDc->LineTo(200,200); ... pDC->SelectObject(pOldPen); } Das Objekt "DrawPen" hört nämlich am Ende der Funktion "zu leben auf" und ist aber immer noch im Device Kontext selektiert. Man sollte meinen, das sei egal, weil ja nicht mehr darauf zugegriffen wird. Unter WinNT, W2K, WinXP, ... ist es auch kein Problem, aber Win95,98 und ME schmeißt die Anwendung sofort mit einem Resourcenfehler raus. Grüße FireHeart
-
Hallo Fire-Heart!
WinNT, W2K, WinXP, ... ist es auch kein Problem,
aber Win95,98 und ME schmeißt die Anwendung sofort mit einem
Resourcenfehler raus. Grüße FireHeartDu irrst. Auch unter Win2K und später führt dies auf kurz oder lang zu Ressourcen-Leaks nur ist die Zahl der GDI Objekte nicht mehr auf 64000 (oder so) begrenzt. D.h. das Programm frisst Speicher bei jedem OnPaint Vorgang, wenn man nicht so vorgeht wie Du es beschreibst.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Hallo Martin Du hast sicher recht. Ich hatte ja auch ein ungutes Gefühl im Bauch, als ich das erste Mal meine Anwendungen auf Win7 getestet hatte...wer weiß schon, was man immer schon für "Unsauberkeiten" gemacht hatte, ohne zu wissen, das dies überhaupt eine solche ist. Glücklicherweise liefen die Anwendungen aber auch unter Win7 stabil ( ** Freude **) Grüße FireHeart