Farbverlauf
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Farbverlauf
hi,
kann man direkt in ein XbpStatic oder oDlg:drawingArea eine Farbverlauf
bekommen ?
z.Z. lade ich ein Bitmap (mit Farbverlauf) in die XbpStatic.
gruss by OHR
Jimmy
kann man direkt in ein XbpStatic oder oDlg:drawingArea eine Farbverlauf
bekommen ?
z.Z. lade ich ein Bitmap (mit Farbverlauf) in die XbpStatic.
gruss by OHR
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jimmy,
was spricht denn dagegen, die Bitmap mit dem Farbverlauf im Speicher zu erzeugen und anzuzeigen (wie Du es ja wahrscheinlich gerade machst)?
Hast Du Dir mal das Ownerdrawing-Beispiel von Alaska angeschaut?
Ich weiß jetzt nicht, wie das da mit dem Hintergrund gelöst ist - aber m.E. nach ist da doch auch ein Farbverlauf, oder?
Viele Grüße,
Martin
was spricht denn dagegen, die Bitmap mit dem Farbverlauf im Speicher zu erzeugen und anzuzeigen (wie Du es ja wahrscheinlich gerade machst)?
Hast Du Dir mal das Ownerdrawing-Beispiel von Alaska angeschaut?
Ich weiß jetzt nicht, wie das da mit dem Hintergrund gelöst ist - aber m.E. nach ist da doch auch ein Farbverlauf, oder?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Hi Jimmy,
Phil Ide hat ein Beispiel (Farbverlauf auf oDlg:drawingArea) hier veröffentlicht: http://www.idep.org.uk/xbase/datpage/gradient.html.
Der Farbverlauf wird dort mit einem API-Aufruf in aint() dynamisch erzeugt. Ist zur Laufzeit in jeder Hinsicht konfigurierbar, sieht wunderschön aus, übermalt jedoch alles, was auf der drawingArea plaziert ist.
Um dem abzuhelfen, sehe ich zwei Möglichkeiten. Entweder den Griff in die API-Trickkiste, um beim aint() die Children auszusparen. Recht kompliziert. Viel unproblematischer wäre es, beim ersten aint(), und noch bevor die Children existieren, die Grafik in einem XbpBitmap-Objekt aufzuzeichnen. Das kann dann wie üblich drawingArea:bitmap (beziehungsweise XbpStatic:caption) zugewiesen werden.
Viele Grüße,
Günter
Phil Ide hat ein Beispiel (Farbverlauf auf oDlg:drawingArea) hier veröffentlicht: http://www.idep.org.uk/xbase/datpage/gradient.html.
Der Farbverlauf wird dort mit einem API-Aufruf in aint() dynamisch erzeugt. Ist zur Laufzeit in jeder Hinsicht konfigurierbar, sieht wunderschön aus, übermalt jedoch alles, was auf der drawingArea plaziert ist.
Um dem abzuhelfen, sehe ich zwei Möglichkeiten. Entweder den Griff in die API-Trickkiste, um beim aint() die Children auszusparen. Recht kompliziert. Viel unproblematischer wäre es, beim ersten aint(), und noch bevor die Children existieren, die Grafik in einem XbpBitmap-Objekt aufzuzeichnen. Das kann dann wie üblich drawingArea:bitmap (beziehungsweise XbpStatic:caption) zugewiesen werden.
Viele Grüße,
Günter
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
puren Xbase++ machen könnte.
Es scheint mir so als wenn die XP "Theme" dafür zuständig sind. Das
sieht man besonders gut an einen "silbernen" XP Button den man maximal
in der Höhe (:CurrenSize()[2]) macht damit man die Farbverlauf gut
sehen kann.
Stellt man nun auf "klassisches Windows" um verschwinden diese Farb-
verläufe auch bei den XP Buttons, aber im OwnerDraw Menue (Devcon)
sind bei dem MenuItem noch Farbverläufe.
Es gibt in Menus.prg der Methode rawItemBackground( oPS, aInfo )
die Stelle "// Fill the background area". Dort stand mal "vorher" der
Kommentar :
das was ich haben möchte. Phil arbeitet mit der gdi32.dll .
ok danke, ich werde das mal evaluieren.
gruss by OHR
Jimmy
grundsätzlich nichts, aber ich würde gerne wissen on und wie man es mitMartin Altmann hat geschrieben: was spricht denn dagegen, die Bitmap mit dem Farbverlauf im Speicher zu erzeugen und anzuzeigen (wie Du es ja wahrscheinlich gerade machst)?
puren Xbase++ machen könnte.
das war mit einer der Gründe warum ich überhaupt auf die Frage kam.Martin Altmann hat geschrieben: Hast Du Dir mal das Ownerdrawing-Beispiel von Alaska angeschaut?
Ich weiß jetzt nicht, wie das da mit dem Hintergrund gelöst ist - aber m.E. nach ist da doch auch ein Farbverlauf, oder?
Es scheint mir so als wenn die XP "Theme" dafür zuständig sind. Das
sieht man besonders gut an einen "silbernen" XP Button den man maximal
in der Höhe (:CurrenSize()[2]) macht damit man die Farbverlauf gut
sehen kann.
Stellt man nun auf "klassisches Windows" um verschwinden diese Farb-
verläufe auch bei den XP Buttons, aber im OwnerDraw Menue (Devcon)
sind bei dem MenuItem noch Farbverläufe.
Es gibt in Menus.prg der Methode rawItemBackground( oPS, aInfo )
die Stelle "// Fill the background area". Dort stand mal "vorher" der
Kommentar :
mir wird aber nicht ersichtlich wie ::GradientFill arbeitetELSEIF ::GradientFill == .T.
// Use gradient fill
// backBrush = New LinearGradientBrush(rectToPaint, _
// MenuItemBackColorStart, _
// MenuItemBackColorEnd, _
// LinearGradientMode.Horizontal)
// borderPen = Nothing
danke für den Tip. Ich hab mir das angesehen und des ist im PrinzipGünter Beyes hat geschrieben: Phil Ide hat ein Beispiel (Farbverlauf auf oDlg:drawingArea) hier veröffentlicht: http://www.idep.org.uk/xbase/datpage/gradient.html.
das was ich haben möchte. Phil arbeitet mit der gdi32.dll .
jetzt wo du mich noch mal darauf hinweist hab ich es gefunden : GraGradientBox()Jan hat geschrieben: auf der Präsentation von Till auf der DevCon dieses Jahr hat der im OwnerDraw-Menü sowas eingebaut. Das ging über einen DLL-Aufruf.
Code: Alles auswählen
DLLCall( "MSIMG32.DLL", DLL_STDCALL, "GradientFill", nHDC, ;
@aVertex, 2, @aGRect, 1, GRADIENT_FILL_RECT_H )
gruss by OHR
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
in der Titelzeile meines IE, Firefox oder auch Xbase++ Programmen ist ein Farbverlauf von links dunkelblau bis rechts hellblau zu sehen.
Diese Funktion des BS gibt es also zumindest schon seit Win2000 - vermutlich ab 16 Bit Farben, eventuell abhängig von Systemeinstellungen.
Somit dürfte es kein Problem sein diese GDI32.DLL zu verwenden.
Soweit ich mich erinnern kann wird die auch von RMCHART genutzt und soll auch schon bei Win98 dabei gewesen sein.
in der Titelzeile meines IE, Firefox oder auch Xbase++ Programmen ist ein Farbverlauf von links dunkelblau bis rechts hellblau zu sehen.
Diese Funktion des BS gibt es also zumindest schon seit Win2000 - vermutlich ab 16 Bit Farben, eventuell abhängig von Systemeinstellungen.
Somit dürfte es kein Problem sein diese GDI32.DLL zu verwenden.
Soweit ich mich erinnern kann wird die auch von RMCHART genutzt und soll auch schon bei Win98 dabei gewesen sein.
Gruß
Hubert
Hubert