WPFDevelopers
WPFDevelopers copied to clipboard
ColorPicker 的 Width 与 Height 设置 NaN 后,Thumb 位置发生错误
在目标控件初始化时_thumb的位置是准确的,但是在色盘在进行大小缩放的时候_thumb其实位置是出现问题的,重要的一点是缩放_thumb的位置没进行刷新,需要在OnRender的时候进行重新刷新_thumb即可
private void UpdateThumbPosition()
{
if (_canvas == null || _thumb == null) return;
var color = SelectedColor;
double h = 0, s = 0, b = 0;
ColorUtil.HsbFromColor(color, ref h, ref s, ref b);
Canvas.SetLeft(_thumb, s * _canvas.ActualWidth - _thumb.ActualWidth / 2);
Canvas.SetTop(_thumb, (1 - b) * _canvas.ActualHeight - _thumb.ActualHeight / 2);
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
UpdateThumbPosition();
}