Example #1
0
        private void HatchPatternXData(Hatch hatch)
        {
            if (hatch.XData.ContainsKey(ApplicationRegistry.Default.Name))
            {
                XData xdataEntry = hatch.XData[ApplicationRegistry.Default.Name];
                xdataEntry.XDataRecord.Clear();
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.RealX, hatch.Pattern.Origin.X));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.RealY, hatch.Pattern.Origin.Y));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.RealZ, 0.0));
            }
            else
            {
                XData xdataEntry = new XData(new ApplicationRegistry(ApplicationRegistry.Default.Name));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.RealX, hatch.Pattern.Origin.X));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.RealY, hatch.Pattern.Origin.Y));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.RealZ, 0.0));
                hatch.XData.Add(xdataEntry.ApplicationRegistry.Name, xdataEntry);
            }

            if (!(hatch.Pattern is HatchGradientPattern))
            {
                return;
            }

            HatchGradientPattern grad = (HatchGradientPattern)hatch.Pattern;

            if (hatch.XData.ContainsKey("GradientColor1ACI"))
            {
                XData       xdataEntry = hatch.XData["GradientColor1ACI"];
                XDataRecord record     = new XDataRecord(XDataCode.Integer, grad.Color1.Index);
                xdataEntry.XDataRecord.Clear();
                xdataEntry.XDataRecord.Add(record);
            }
            else
            {
                XData xdataEntry = new XData(new ApplicationRegistry("GradientColor1ACI"));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Integer, grad.Color1.Index));
                hatch.XData.Add(xdataEntry.ApplicationRegistry.Name, xdataEntry);
            }

            if (hatch.XData.ContainsKey("GradientColor2ACI"))
            {
                XData       xdataEntry = hatch.XData["GradientColor2ACI"];
                XDataRecord record     = new XDataRecord(XDataCode.Integer, grad.Color2.Index);
                xdataEntry.XDataRecord.Clear();
                xdataEntry.XDataRecord.Add(record);
            }
            else
            {
                XData xdataEntry = new XData(new ApplicationRegistry("GradientColor2ACI"));
                xdataEntry.XDataRecord.Add(new XDataRecord(XDataCode.Integer, grad.Color2.Index));
                hatch.XData.Add(xdataEntry.ApplicationRegistry.Name, xdataEntry);
            }
        }
        public static System.Windows.Media.Brush PatternSolidFillToBrush(HatchGradientPattern myPattern, AciColor myColor)
        {
            GradientStopCollection stops   = new GradientStopCollection();
            LinearGradientBrush    lgBrush = new LinearGradientBrush(stops);
            RadialGradientBrush    rgBrush = new RadialGradientBrush(stops);

            if (myPattern.GradientType == HatchGradientPatternType.InvSpherical)
            {
                rgBrush.Center         = new System.Windows.Point(0.25, 0.25);
                rgBrush.GradientOrigin = new System.Windows.Point(0.25, 0.25);

                rgBrush.RadiusX = 1;
                rgBrush.RadiusY = 1;
                GradientStop stop1 = new GradientStop();
                stop1.Color  = ToMediaColor(myPattern.Color1.ToColor());
                stop1.Offset = 0.15;
                stops.Add(stop1);
                GradientStop stop2 = new GradientStop();
                stop2.Color  = ToMediaColor(myPattern.Color2.ToColor());
                stop2.Offset = 0.5;
                stops.Add(stop2);

                rgBrush.GradientStops = stops;

                return(rgBrush);
            }
            else if (myPattern.GradientType == HatchGradientPatternType.Hemispherical)
            {
                rgBrush.Center         = new System.Windows.Point(1, 1);
                rgBrush.GradientOrigin = new System.Windows.Point(1, 1);

                rgBrush.RadiusX = 1.5;
                rgBrush.RadiusY = 1.5;
                GradientStop stop1 = new GradientStop();
                stop1.Color  = ToMediaColor(myPattern.Color2.ToColor());
                stop1.Offset = 0.1;
                stops.Add(stop1);
                GradientStop stop2 = new GradientStop();
                stop2.Color  = ToMediaColor(myPattern.Color1.ToColor());
                stop2.Offset = 0.9;
                stops.Add(stop2);

                rgBrush.GradientStops = stops;

                return(rgBrush);
            }
            else
            {
                return(AciColorToBrush(myColor));
            }
        }