Farbverlauf-Füllung

Hi ihr :smile:

Wie kann man mit Windows ein Polygon so füllen, dass ich von links nach rechts einen Farbverlauf (also z.B. von dunkel blau nach hell blau) erhalte ?

Wenn das mit Windows nicht geht, kann mir vielleicht jemand die Veränderungen der RGB-Werte während des Farbverlaufs mitteilen ?

Vielen Dank für die Erleuchtung schon im Voraus

cu Stefan.

? Wie: mit windows ?

Wie kann man mit Windows ein Polygon so
füllen, dass ich von links nach rechts
einen Farbverlauf (also z.B. von dunkel
blau nach hell blau) erhalte ?

was heisst mit Windows, und was fuer ein Objekt (ein BMP, ein ICON) willst du fuellen ?

Wenn du ein geangiges Grafikobjekt (BMP, GIF etc.) meinst: mit Paint-Shop geht das relativ einfach.

Gruss

Hi Dirk :smile:

Ich möchte ein 3D-Kuchendiagramm programmieren, das man beliebig im Raum drehen kann. Da wäre es natürlich toll, wenn die Rand-Polygone einen Frabverlauf zeigen würden.

Ich möchte also mit der Win32-API Polygon zeichnen und mit einem Farbverlauf füllen.

Weisst du wie das geht ?

cu Stefan.

Wie kann man mit Windows ein Polygon so
füllen, dass ich von links nach rechts
einen Farbverlauf (also z.B. von dunkel
blau nach hell blau) erhalte ?

Dafür gibts eine API-Funtion, aber frag mich nicht welche. Am besten durchforstet du mal den api-Katalog.

cu, holli

Hi Ho :smile:

Na, das ist ja schon mal 'ne Info …

Danke dir

cu Stefan.

Hi Stefan,
ich weiss nicht ob Du es brauchen kannst - vielleicht ist es für Dich modifizierbar!!
greets from MichL (Vienna)

VB6 - Farbverlauf von oben Blau nach unten Schwarz:

Public Sub Dither(vForm As Form)
Dim intLoop As Integer
Dim intScaleMode As Integer

If vForm.WindowState = vbMinimized Then Exit Sub

intScaleMode = vForm.ScaleMode

vForm.DrawStyle = vbInsideSolid
vForm.DrawMode = vbCopyPen
vForm.ScaleMode = vbPixels
vForm.DrawWidth = 2
vForm.ScaleHeight = 256

For intLoop = 0 To 255
 vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(0, 0, 255 - intLoop), B 'Blau
 'vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(255 - intLoop, 0, 0), B 'Rot
Next intLoop
vForm.ScaleMode = intScaleMode

End Sub

Hi. Habe was gefunden. Ich schreibe es nur aus einem Buch ab, aber bisher hat alles was da drin stand funktioniert.

form: picturebox picFVL und commandbutton

code:

declare function CreateSolidBrush ...
declare function DeleteObjext ...
declare function FillRect...
Type RECT
...
End Type

private sub Command1\_Click()
dim hb as long, i as long, rec as rect
with picFVL
 .width=3\*255
 doevents
 rec.botom=.picFVL
 rec.top=0
 .print " "
 for i=0 to 255
 hb=createsolidbrush(RGB(i,0,255-i))
 rec.left=i rec.Right=(i+1)
 fillrect .hdc, rec, hb
 deleteobject hb
 next
 for i=0 to 255
 hb=createsolidbrush(RGB(255,i,0))
 rec.left=i+255 rec.Right=i+256
 fillrect .hdc, rec, hb
 deleteobject hb
 next
 for i=0 to 255
 hb=createsolidbrush(RGB(255-i,255,0))
 rec.left=i+510 rec.Right=i+511
 fillrect .hdc, rec, hb
 deleteobject hb
 next
end with
end sub

Wenn du statt dessen, z.B. auf einem anderen Control malen willst, mußt du dessen hdc benutzen.
Probiers einfach aus.

Grüße, Holli

Hallo.

Für Delphi kann ich’s sicher sagen, sollte in C oder VB aber zumindest vom Prinzip her ähnlich sein:

Am besten, du erstellst genau die REGION, die du mit einem Farbverlauf füllen willst. Das geht mit den API-Begehlen CreateRgn, CreateEllipticRgn usw. und CombineRgn.

Durch logische Verknüpfung deiner einselenen (wohl elliptischen) Regionen erhälst du den Rand deines Kuchendiagramms als Region. Diese Wählst du aus mit SelectClipRgn und dann füllst du den (rechteckigen) Bereiche „hinter“ der Region einfach so, also wolltest du den Fensterhintergrund mit einem Farbverlauf füllen. That’s it.

Sieh in der Online-Hilfe nach und wenn du spezielle Probleme hast, melde dich nochmal.

Als denn,

Jochen

Danke Markus :smile:)

Jetzt habe ich verstanden, wie ich so einen Farbverlauf selbst programmieren kann.

Du hast mir wirklich sehr geholfen !!!

cu Stefan.

Hi Michael :smile:

Danke dir :smile:

Ich kann es zwar nicht direkt gebrauchen, weil ich nur in C++ programmiere, aber ich habe jetzt verstanden, wie so ein Farbverlauf programmiert wird …

cu Stefan.

Hi Jo :smile:

Das werde ich gleich mal schnell ausprobieren …

Danke

cu Stefan.