2 "Clipping" Regions ?
-
Ich will 2 unterschiedlich komplexe Regionen zeichnen, kann man sich wie ein Schloß mit Schlüßelloch vorstellen, außen das Schloß bleibt immer gleich, aber wenn man in das Schlüßelloch guckt, also die innere Region, verändert sich der Hintergrund je nach Perspektive. Da ich vorher nicht weiß welche Form der Hintergrund hat, kann ich den von der Form her nur durch eine Region begrenzen, allerdings krieg ich das nicht hin, 2 "komplex" geformte Regionen darstellen zu lassen, da mir bei der Arbeit mit Clipping Regions immer ein Teil weggeschnitten wird .. Gibt es eine Möglichkeit eine z.B. kreisrunde Region zeichnen zu lassen und in dieser dann nochmal eine ovale Region, in der auch beliebige Zeichenoperationen ausgeführt werden können ? Danke schonmal ^^
-
Schon mal mit CombineRgn versucht?
-
Ja in verschiedensten Varianten .. Aber entweder, das Schlüßelloch wird komplett raus geschnitten, praktisch als würde ich das Schloß mit Schlüßelloch haben, aber ich kann dann eben nicht "durchgucken", oder es wird halt zu einer Region zusammengeschmißen und ich habe nur noch das Schloß ohne Loch.
-
ka ob ich das richtig verstanden habe, aber vieleicht hilft Folgendes:
HRGN hRgn1,hRgn2; hRgn1 = CreateRectRgn(0,0,500,500); hRgn2 = CreateEllipticRgn(100,100,200,200); CombineRgn(hRgn1,hRgn1,hRgn2,RGN_XOR); DeleteObject(hRgn2); hRgn2 = CreateEllipticRgn(120,120,180,180); CombineRgn(hRgn1,hRgn1,hRgn2,RGN_OR); DeleteObject(hRgn2); // -> hRgn1 <-
-
So hab ich mir das auch schon mal gedacht, aber nicht probiert, weil ich (auf dein Beispiel jetzt bezogen) parallel auf den DC des äußeren Rings und den des inneren Rings zeichnen müsste. Also ich brauch praktisch 2 DC's, für das Schloß, wo ich z.B. einfach FillRect drauf aufrufe um den Bereich des Schloßes zu füllen (außer eben den Bereich, wo das Schlüßelloch ist) und noch mal einen DC wo ich wieder FillRect drauf aufrufe um den Bereich des Schlüßellochs zu füllen. Mein Problem ist halt, dass ich vorher nicht weiß, welche Form genau das Schlüßelloch hat und somit muss ich eben den ganzen möglichen Bereich, den das Loch haben kann füllen. Bzw. muss darauf auch Text und u.U. Bilder in den inneren Bereich gezeichnet werden, wofür ich ja wieder einen DC brauche ..
Anstatt Schloß und Schlüßelloch würde mir noch Bild und Bilderrahmen als Beispiel einfallen ..
Der Bilderrahmen kann beispielsweise verschiedene Formen haben (ist aber immer z.B. braun) und das Bild (was ich von "Hand" zeichne) muss sich eben daran anpassen, also brauche ich ein Region/DC für den Bilderrahmen und ein Region/DC fürs Bild ..
-
Dann mach doch zwei Zeichenvorgänge: Hintergrund und Vordergrund.
Für den Hintergrund befüllst du einfach den ganzen DC und für den Vordergrund benutzt du eine entsprechende Region.
-
ich probier morgen mal ein wenig rum, und werde mal die ganzen Lösungsansätze durchexzerzieren, aber heute habe ich kein Nerv mehr dafür ^^
Danke auf jeden Fall schonmal
-
Habe es jetzt hinbekommen, ich weiß zwar nicht, was ich bei meinem ersten Versuch anders gemacht habe, aber jetzt gehts ..
Habe die beiden Vorschläge hier kombiniert ^^Danke auf jeden Fall für die gute Hilfe