private void createShadow(Shape s, Shape sh, int dpi, double angle, double size) { try { ShapeRange forComb = null; double tw = 0, th = 0, tx = 0, ty = 0; if ((bool)cbInnerShadow.IsChecked) { double nw = 0, nh = 0, nx = 0, ny = 0; sh.GetSize(out nw, out nh); sh.GetPositionEx(cdrReferencePoint.cdrCenter, out nx, out ny); //double dist = str2dbl(tbDistance.Text); //if (dist == 0) dist = size; //if (dist == 0) dist = 0.1; //nw = nw + (dist * 4); nh = nh + (dist * 4); nw = nw + (nw / 2); nh = nh + (nh / 2); Shape sAround = sh.Layer.CreateRectangle2(0, 0, nw, nh, 0, 0, 0, 0); sAround.SetPositionEx(cdrReferencePoint.cdrCenter, nx, ny); forComb = new ShapeRange(); forComb.Add(sh); forComb.Add(sAround); sh = forComb.Combine(); } sh.OrderBackOf(s); sh.Fill.UniformColor.CopyAssign(_shColor); sh.Outline.SetProperties(size, null, _shColor); if ((bool)cbInnerShadow.IsChecked) { sh.FillMode = cdrFillMode.cdrFillAlternate; //new fill fix } var imgType = cdrImageType.cdrCMYKColorImage; switch (_shColor.Type.ToString()) { case "cdrColorGray": imgType = cdrImageType.cdrGrayscaleImage; break; case "cdrColorLab": imgType = cdrImageType.cdrLABImage; break; case "cdrColorRGB": imgType = cdrImageType.cdrRGBColorImage; break; } sh = sh.ConvertToBitmapEx(imgType, false, true, dpi, cdrAntiAliasingType.cdrNormalAntiAliasing, true, false); double feather = str2dbl(tbFeather.Text) * 100; // TODO: Looks like ApplyBitmapEffect doesn't work correctly in 2019 sh.Bitmap.ApplyBitmapEffect(@"Gaussian Blur", @"GaussianBlurEffect GaussianBlurRadius=" + feather.ToString(CultureInfo.InvariantCulture) + ", GaussianBlurResampled=0"); int opacity = (Convert.ToInt32(tbOpacity.Text) - 100) * -1; sh.Transparency.ApplyUniformTransparency(opacity); sh.Transparency.AppliedTo = cdrTransparencyAppliedTo.cdrApplyToFillAndOutline; switch (cbMode.SelectedValue.ToString()) { case "Normal": sh.Transparency.MergeMode = cdrMergeMode.cdrMergeNormal; break; case "Multiply": sh.Transparency.MergeMode = cdrMergeMode.cdrMergeMultiply; break; case "Add": sh.Transparency.MergeMode = cdrMergeMode.cdrMergeAdd; break; //case "0": sh.Transparency.MergeMode = } sh = sh.ConvertToBitmapEx(imgType, false, true, dpi, cdrAntiAliasingType.cdrNormalAntiAliasing, true, false); sh.Properties["DS2", 1] = createPresetStr(); //add settings if ((bool)cbOverPrint.IsChecked) { sh.OverprintBitmap = true; } if ((bool)cbInnerShadow.IsChecked) { sh.AddToPowerClip(s); } else { if ((bool)cbGroup.IsChecked) { var gr = new ShapeRange(); gr.Add(s); gr.Add(sh); gr.Group(); gr = null; } } } catch (Exception err) { MessageBox.Show(err.ToString(), MName, MessageBoxButton.OK, MessageBoxImage.Error); } }