Stiftauswahl per Toolbar
-
Hallo
Bei einem Zeichenprogramm sollen verschiede Objekte gezeichnet werden und später änderbar sein. Wie unter anderem auch die Stifte für den Rahmen.
Also die Toolbar für die verschieden Stricharten ist vorhanden
und um die Auswahl einzufügen habe ich mir ein char array angelegt wo die Namen der Stifte gespeichert sind.
Nur funktioniert das anscheinend nicht.
Ich hoffe ich kann mit euer Hilfe eine Lösung finden
wie ich dieses bewerkstelligen kann.static char arPens[5][14] = { "PS_SOLID", "PS_DOT", "PS_DASH", "PS_DASHDOTDOT", "PS_DASHDOT" };
void CPowerPaintView::SetPenBrush(CDC *pDC, bool bTransparent, UINT nColor, UINT nColorFI,UINT nWidth, UINT nPen) {... m_pPenNew->CreatePen(arPens[nPen-ID_PEN_SOLID], nWidths[nWidth-ID_WIDTH_VTHIN], arColors[nColor - ID_COLOR_BLACK]); ...}
-
CreatePen() erwartet als Parameter keinen String, sondern einen int-Wert, also solltest du dein Array anders definieren:
int arPEns[] = { PS_SOLID, PS_DOT, PS_DASH, PS_DASHDOTDOT, PS_DASHDOT };
(PS_SOLID, etc. sind int-Konstanten, die für diesen Zweck definiert wurden)
PS: Für arColors gilt vermutlich das selbe.
-
Ja Danke jetzt funktioniert es.
die Farben wurden übrigens so definiert:
static COLORREF arColorsFI[11] = { RGB( 0, 0, 0), // Schwarz RGB( 0, 0,255), // Blau RGB( 0,255, 0), // Grün RGB( 0,255,255), // Cyan RGB(255, 0, 0), // Rot RGB(255, 0,255), // Magenta RGB(255,255, 0), // Gelb RGB(255,255,255), // Weiß RGB(128,128,128), // Dunkelgrau RGB(192,192,192), // Hellgrau RGB( 0, 0, 0) // Benutzerdefinierte Farbe };
kleine andere Frage noch wie kann man ausgewählte Objekte verschieben gibt es dafür eine fertige funktion oder muß ich die selber schreiben?
-
Hab da aber noch einen Fehler irgentwie.
Wenn ich die Strichdicke erhöhe dann zeichnet er mir eine durchgehende Linie.
-
OdeX77 schrieb:
kleine andere Frage noch wie kann man ausgewählte Objekte verschieben gibt es dafür eine fertige funktion oder muß ich die selber schreiben?
Wo willst du etwas verschieben?
Verschieben im Speicher geht per Zuweisung (oder notfalls per memmove()).
Verschieben auf dem Bildschirm klappt per "alte Position mit Hintergrund übermalen - Objekt an neuer Position zeichnen".Wenn ich die Strichdicke erhöhe dann zeichnet er mir eine durchgehende Linie.
Das sollte eigentlich nicht passieren
(eventuell solltest du die zweite Version der CreatePen()-Methode mit PS_USERSTYLE nehmen und die Strichlängen per Hand definieren)