"Wandfarbe" bei Panel versenkt (3D-Effekt)
-
Hallo,
habe ein Panel mit BevelInner und Outer auf bvLowered gesetzt. Dabei entsteht eine Art Rahmen (unten und an der rechten Seite des Panels, was den 3D effekt hervorruft)Und darein ein Image gesetzt und es so angepasst dass er der Rahmen noch zu sehen ist, nur ist dieser Rahmen (egal welche Farbe das Panel hat) immer weiß und wenn ich jetzt ein Bild mit weißem Hintergrund habe, sieht man das eingerückte Panel nicht mehr, weil der Rahmen ja auch weiß ist. Gibt es ne Möglichkeit, dass dieses eingerückte nicht weiß wird? kann ich die Farbe davon ändern?
mfg
Steffen[ Dieser Beitrag wurde am 20.01.2003 um 13:36 Uhr von skho editiert. ]
-
*räusper*
vielleicht habe ich mich ja auch falsch ausgedrückt ... mmh... also BevelInner und BevelOuter auf bvLowered ergibt natürlich an jeder Seite eine "Vertiefung". Man sieht also eine Art "Wand". Diese Wand ist links und oben sehr dunkel und unten und recht weiß dargestellt. Kann ich die farbe dieser entstandenen "Wand" ändern?
mfg
Steffen
-
Die Farbe ist ja abhängig von den Systemfarben im Windows. Vielleicht hilft Dir da ja "Canvas" weiter.
-
@F98
hast du da vielleicht ne konkrete Methode im Visier? Bin auf die FloodFill gestoßen aber irgendwie ist das nicht so das blaue vom hartgekochten Ei.noch ein kleiner Hinweis wär net schlecht... Soll ich da dann ganz auf das Panel verzichten? Oder ist Canvas auch auf Panel anwendbar?
mfg
Steffen
-
Die Farbe des Randes eines Panels läßt sich nicht so einfach verändern, da Du auf den Canvas, der in TCustomControl eingeführt wird, aber als protected deklariert ist, nicht zugreifen kannst. Du müßtest von TCustomPanel (direkter Nachfolger von TCustomControl) eine neue Panel-Klasse ableiten, die dann auf das protected property Canvas zugreifen kann. Diese Klasse könnte die Eigenschaft Canvas aber auch auf die public-Ebene hochreichen. Wenn Du Canvas am Wickel hast, kannst Du den Rand farblich verändern.
-
klingt schwer , ich glaub bis dahin muss ich mich noch hinarbeiten, aber hab mir am Samstag ja das Buch von marc++s gekauft "oops for dummies" *g* vll mach ich das dann bei gelegenheit mal... Danke erstmal... wenn ich dann nochmal konkrete Fragen hab, meld ich mich wieder.
Schönen Feierabend (o:
mfg
Steffen
-
Dir auch einen schönen Feierabend. Habe Dir 'mal ein kleines Beispiel gemailt...
-
Hab ich mir grad mal zusammengezimmert
HDC hdc = GetDC(Panel1->Handle); TCanvas* canvas = new TCanvas; canvas->Handle = hdc; canvas->PenPos = Point(0, Panel1->Height - 2); canvas->LineTo(Panel1->Width - 2, Panel1->Height - 2); canvas->LineTo(Panel1->Width - 2, 0); canvas->PenPos = Point(Panel1->Width - 1, 0); canvas->LineTo(Panel1->Width - 1, Panel1->Height - 1); canvas->LineTo(0, Panel1->Height - 1); delete canvas; ReleaseDC(Panel1->Handle, hdc);
[ Dieser Beitrag wurde am 20.01.2003 um 20:52 Uhr von WebFritzi editiert. ]
-
Yo. Webfritzi, so hatte ich mir das auch gedacht.
Aber: Wie weise ich diesen Lines nun eine Farbe zu:
canvas->Brush->Color = clRed;
bringt irgendwie keinen Erfolg.
-
@alex
danke fürs senden, hab noch ne Frage dazu. (see ure mails) (o:@WebFritzi
danke erstmal fürs aufschreiben.@F98
Ja das Problem hab ich auch noch damit. LineTo benutzt laut Hilfe den aktuellen Stift - habe also canvas->Pen->Color = clRed gesetzt und das ohne Erfolg?! Und auch wenn ich zusätzlich noch canvas->Pen->Mode = pmCopy setze, passiert nichts?!mfg
Steffen
-
canvas->Pen->Color = clRed;
Bei mir klappt das!
-
Ok geht.