我正在为我的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)
不会渲染用于制作渐变的不透明蒙版。
左边是原始矩形,右边是render.Render(picker); image.Source = render;
的结果,因为你可以看到右边没有应用不透明蒙版。