RenderTargetBitmap.Render()不会渲染不透明蒙版

时间:2018-01-22 16:50:39

标签: c# wpf image background user-controls

我正在为我的WPF应用程序制作一个ColorPicker(我知道扩展工具包)并且我已经从this复制了xaml并且它运行良好但现在我需要让颜色指向老鼠。由于色调在Canvas内,我试过这个:

Rectangle o = sender as Rectangle;
Canvas picker = ((Canvas)((VisualBrush)o.Fill).Visual);

Point point = e.GetPosition(picker);
RenderTargetBitmap render = new RenderTargetBitmap((int)picker.RenderSize.Width, (int)picker.RenderSize.Height, 96, 96, PixelFormats.Default);

render.Render(picker);

image.Source = render;

if ((point.X <= render.PixelWidth) && (point.Y <= render.PixelHeight)) {
    var crop = new CroppedBitmap(render, new Int32Rect((int)point.X, (int)point.X, 1, 1));

    var pixels = new byte[4];
    crop.CopyPixels(pixels, 4, 0);

    selectedColor = new SolidColorBrush(Color.FromArgb(255, pixels[2], pixels[1], pixels[0]));
    selectedColorRect.Fill = selectedColor;
}

}

在我的鼠标移动事件中,但render.Render(picker)不会渲染用于制作渐变的不透明蒙版。

修改 Rectangle vs render

左边是原始矩形,右边是render.Render(picker); image.Source = render;的结果,因为你可以看到右边没有应用不透明蒙版。

0 个答案:

没有答案