Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=78185 --- shadow/78185 2006-05-03 00:28:11.000000000 -0400 +++ shadow/78185.tmp.29230 2006-05-03 00:29:27.000000000 -0400 @@ -10,13 +10,13 @@ Component: libgdiplus AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] QAContact: [EMAIL PROTECTED] TargetMilestone: --- URL: -Summary: Missing support for scalableAngle in LinearGradientBrush +Summary: [PATCH] Missing support for scalableAngle in LinearGradientBrush Description of Problem: LinearGradientBrush doesn't propertly supports the following features: * FlipX, FlipY and FlipXY modes * Scalable angles @@ -81,6 +81,33 @@ ------- Additional Comments From [EMAIL PROTECTED] 2006-05-03 00:28 ------- Created an attachment (id=16909) Sample to show scale diff + +------- Additional Comments From [EMAIL PROTECTED] 2006-05-03 00:29 ------- +That was awful! After many days I have come up with a patch that is +close to the real thing. It is not an implementation that I am proud +of but it works. + +I was able to find slightly better documentation for the +isAngleScaleable argument. + +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusreference/classes/lineargradientbrushclass/lineargradientbrushconstructors/lineargradientbrush_3rectamprect_colorampcolor1_colorampcolo.asp + +The important thing being +theta = arctan( (width / height) tan(theta) ) + +The same brush look can be achieved by simply applying this formula to +the previous logic for when this flag is false. However the matrix +was not correct. There is a shear factor that I can not get an +equation for. That or a scale factor before the rotate operation. + +What the equation above does provide is a way to determine the slope +of the starting and ending boundaries. Also I found that if the +rectangle corners were transformed using the non scaled angle matrix +that they had the right X or Y value. I use the slope and the corners +of the original rectangle to fill in the missing value. + +With the three constructed point I then created a matrix from the +original rectangle to the new points. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
