Tag: 对比

更快的位图对比度算法

我有一个带有轨迹栏滑块控件的工具,用于调整图像的亮度,对比度,伽玛等。 当用户拖动滑块时,我试图获得我的图像的实时更新。 亮度和伽玛算法是可接受的速度(大约170ms)。 但对比度算法大约是380ms。 基本上我的表单是一个带滑块的工具窗口。 每次更新图像时,它都会向父项发送一个事件,重新绘制新图像。 工具窗口将原始未修改的图像锁定在内存中,因此我始终可以访问它的字节。 因此,每次更改滑块的ValueChanged事件(例如“对比度”滑块)时,我都会这样做。 工作(目标)位图的LockBits为Format24bppRgb(原始位图在Format32bppPArgb中) Marshal。将位复制到byte []数组 检查我正在做的操作(选择了哪个滑块) 对比度使用以下代码: 码: double newValue = 0; double c = (100.0 + contrast) / 100.0; c *= c; for (int i = 0; i < sourcePixels.Length; i++) { newValue = sourcePixels[i]; newValue /= 255.0; newValue -= 0.5; newValue *= c; newValue += 0.5; newValue […]

如何根据字体颜色选择背景颜色以获得适当的对比度

我对颜色组成了解不多,所以我想出了这个算法,它会根据试验错误的字体颜色选择背景颜色: public class BackgroundFromForegroundColorConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is Color)) return value; Color color = (Color)value; if (color.R + color.G + color.B > 550) return new SolidColorBrush(Colors.Gray); else if (color.R + color.G + color.B > 400) return new SolidColorBrush(Colors.LightGray); else return new SolidColorBrush(Colors.White); […]