Misschien wazige topictitel, maar ik kon niet op wat beters komen.
Het probleem is als volgt:
Ik ben bezig een heatmap te maken waarop ik verschil moet laten zien.
Ik heb een aantal + punten (locaties op de kaart die positief zijn)
en ik heb een aantal - punten (locaties op diezelfde kaart die negatief zijn)
De kaart begint op grijs, en zwart is positief, en wit negatief. Bij het tekenen van een punt teken ik niet alleen dat punt, maar teken ik er een rondje omheen.
Dit doe ik met de volgende c# code:
(dus ik teken een 'bobbel')
Waneer de punten niet overlappen gaat dit prima, echter is dit wel het geval.
Nu wil ik dat wanneer ik een positief punt op locatie 100, 100 zet, en daar overheen een negatief punt op diezelfde plek, dat het resultaat '0' is, en dus helemaal grijs.
Echter kan ik dit wel beredeneren in 'normaal' c#, maar omdat ik het in GDI+ doe heb ik geen flauw idee hoe ik dit moet aanvliegen.
Zeker omdat ik soms 40 punten op ongeveer 1 plek doe die positief zijn, en daarna een stuk of wat die negatief zijn.
zijn er multiply functies oid in GDI?
Het probleem is als volgt:
Ik ben bezig een heatmap te maken waarop ik verschil moet laten zien.
Ik heb een aantal + punten (locaties op de kaart die positief zijn)
en ik heb een aantal - punten (locaties op diezelfde kaart die negatief zijn)
De kaart begint op grijs, en zwart is positief, en wit negatief. Bij het tekenen van een punt teken ik niet alleen dat punt, maar teken ik er een rondje omheen.
Dit doe ik met de volgende c# code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| List<Point> CircumferencePointsList = new List<Point>(); Point CircumferencePoint; Point[] CircumferencePointsArray; for (double i = 0; i <= 360; i += 15) { CircumferencePoint = new Point(); CircumferencePoint.X = Convert.ToInt32(HeatPoint.X + Radius * Math.Cos(ConvertDegreesToRadians(i))); CircumferencePoint.Y = Convert.ToInt32(HeatPoint.Y + Radius * Math.Sin(ConvertDegreesToRadians(i))); CircumferencePointsList.Add(CircumferencePoint); } CircumferencePointsArray = CircumferencePointsList.ToArray(); Create new PathGradientBrush to create a radial gradient using the circumference points PathGradientBrush GradientShaper = new PathGradientBrush(CircumferencePointsArray); ColorBlend GradientSpecifications = new ColorBlend(3); GradientSpecifications.Positions = new float[3] { 0, 0.5f, 1 }; GradientSpecifications.Colors = new Color[3] { Color.FromArgb(0, color), Color.FromArgb(opacity / 2, color), Color.FromArgb(opacity, color) }; GradientShaper.InterpolationColors = GradientSpecifications; g.FillPolygon(GradientShaper, CircumferencePointsArray); |
(dus ik teken een 'bobbel')
Waneer de punten niet overlappen gaat dit prima, echter is dit wel het geval.
Nu wil ik dat wanneer ik een positief punt op locatie 100, 100 zet, en daar overheen een negatief punt op diezelfde plek, dat het resultaat '0' is, en dus helemaal grijs.
Echter kan ik dit wel beredeneren in 'normaal' c#, maar omdat ik het in GDI+ doe heb ik geen flauw idee hoe ik dit moet aanvliegen.
Zeker omdat ik soms 40 punten op ongeveer 1 plek doe die positief zijn, en daarna een stuk of wat die negatief zijn.
zijn er multiply functies oid in GDI?
This message was sent on 100% recyclable electrons.