如何解决逐帧限制还包含 MediaElement 的 Canvas 的平均亮度
在我的 WPF 应用程序中有一个包含 MediaElement 和其他一些东西的 Canvas。我需要限制整体亮度,计算为画布内所有像素的所有 RGB 值的平均值。这个平均值不应超过 128(亮度的一半)。目前我有一个 50 毫秒的计时器,它调用 renderTargetBitmap.Render(canvas) 来捕捉图像,测量图像并最终相应地设置画布不透明度:
void TimerOpac_Tick(object sender,EventArgs e)
{
RenderTargetBitmap bmp = new RenderTargetBitmap(MyCanvas.RenderSize.Width MyCanvas.RenderSize.Height,96,System.Windows.Media.PixelFormats.Pbgra32);
bmp.Render(MyCanvas);
int bytesPerPixel = 4;
byte[] bytes = new byte[bmp.PixelWidth * bmp.PixelHeight * bytesPerPixel];
bmp.CopyPixels(bytes,bmp.PixelWidth * bytesPerPixel,0);
int AvgLimit = 128;
MyCanvas.Opacity = MeasureAvgAndCalcLimitingOpacity(bytes,AvgLimit);
}
这有效但有延迟,它不是逐帧的。有没有更好的方法,希望在 WPF 中,但也可能使用较低级别的东西?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。