渐变填充
在本机 GDI+ 中有五种画刷 — SolidBrush、LinearGradientBrush、PathGradientBrush、TextureBrush 和 HatchBrush。但是,在该版本中,只有 SolidBrush 和 LinearGradientBrush 可用。XrossOne GDI+ 支持 RadialGradientBrush 而不是 PathGradientBrush。下面的图 5 演示了渐变填充。
 图 5. 渐变填充
代码示例 4
//Clear the background and reset the transform state gx.Clear(Color.White); gx.ResetTransform();
//Fill a rectangle with a black-white LinearGradientBrushX Rectangle r = new Rectangle(20, 50, 300, 100); Color c1 = Color.Black; Color c2 = Color.White; BrushX brush1 = new LinearGradientBrushX(r, c1, c2, 30F); gx.FillRectangle(brush1, r);
//Fill a rectangle with a 7-color LinearGradientBrushX r = new Rectangle(90, 100, 150, 100); LinearGradientBrushX br = new LinearGradientBrushX(r,Color.Black,Color.Black, 60F); ColorBlendX cb = new ColorBlendX(); cb.Positions=new float[7]; int i=0; for(float f=0;f<=1;f+=1.0f/6) cb.Positions[i++]=f; cb.Colors=new Color[] {Color.Red,Color.Orange,Color.Yellow,Color.Green,Color.Blue,Color.Indigo,Color.Violet}; br.InterpolationColors=cb; gx.TranslateTransform(160, 10); gx.RotateTransform(60F); gx.FillRectangle(br, r);
//Fill a rectangle with a 7-color RadialGradientBrushX r.Y += 50; RadialGradientBrushX brush2 = new RadialGradientBrushX(r, Color.Black,Color.Black, 220F); brush2.InterpolationColors = cb; gx.RotateTransform(-45F); gx.TranslateTransform(-200, -170); gx.FillRectangle(brush2, r);
//Refresh Invalidate();
Alpha 通道合成
System.Drawing 命名空间中的 Color 结构在 .NET Framework 和 .NET Compact Framework 中都可用。区别在于 .NET Compact Framework 中禁用了 alpha 成分并且色调-饱和度-亮度 (HSB) 值不可用。幸运的是,alpha 通道合成可以完美地与 XrossOne GDI+ 协同工作(您可能已经从前面的图形示例中推断出这一点)。
|