Direct2D1.RenderTarget.FillOpacityMask 如何工作

问题描述

我想通过遮罩绘制图片,并使用此 APIFillOpacityMask(Bitmap opacityMask,Brush Brush,OpacityMaskContent content,RawRectangleF? destinationRectangle,RawRectangleF? sourceRectangle); 然后,发生了一些奇怪的事情。如果我使用 FillOpacityMask(opacityMask,brush,content),它可以工作并且我在左上角得到一张正确的图片,就像这张图片。但是,当我使用FillOpacityMask(opacityMask,content,destinationRectangle,sourceRectangle)时,它无法工作,只能在左侧或顶部绘制,其中红色框the description picture 这是我的代码的一部分

 public void DrawTexture2DWithMask(
        ITexture2D texture2D,RectangleF destRectangle,ITexture2D maskTexture2D,RectangleF sourceRectangle
       
        )
    {
        SharpDX.Direct2D1.OpacityMaskContent content = SharpDX.Direct2D1.OpacityMaskContent.TextNatural;
        Direct2DTexture2D Texture2D = texture2D as Direct2DTexture2D;
        Direct2DTexture2D MaskTexture2D = maskTexture2D as Direct2DTexture2D;

        rendertargetPrivate.AntialiasMode = SharpDX.Direct2D1.AntialiasMode.Aliased;
        var brush = new SharpDX.Direct2D1.BitmapBrush(rendertargetPrivate,Texture2D.Texture2D);
        brush.InterpolationMode = SharpDX.Direct2D1.BitmapInterpolationMode.Linear;


        rendertargetPrivate.FillOpacityMask(
            MaskTexture2D.Texture2D,content
            //,destRectangle.ToRawRectangleF(),//sourceRectangle.ToRawRectangleF()

            );

    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)