Esempio n. 1
0
        public Layer PushLayer(D2DGraphics g, ScLayer sclayer)
        {
            Layer d2dLayer = new Layer(g.RenderTarget);

            LayerParameters layerParameters = new LayerParameters();

            layerParameters.ContentBounds     = GDIDataD2DUtils.TransToRawRectF(sclayer.DrawBox);
            layerParameters.LayerOptions      = LayerOptions.InitializeForCleartype;
            layerParameters.MaskAntialiasMode = AntialiasMode.PerPrimitive;

            //应用到GeometricMask上的变换,这个变换可能已经在计算布局的时候已经计算到了sclayer.TransLastHitPathGeometry上
            //所以不需要应用变换
            layerParameters.MaskTransform = identityMatrix;

            layerParameters.Opacity       = sclayer.Opacity;
            layerParameters.GeometricMask = sclayer.TransLastHitPathGeometry;

            g.RenderTarget.PushLayer(ref layerParameters, d2dLayer);
            return(d2dLayer);
        }