Ejemplo n.º 1
0
        //http://gaggerostechnicalnotes.blogspot.com/2012/01/wpf-colors-scale.html
        private WriteableBitmap CreateColorRangeBitmap(DSCore.ColorRange1D colorRange)
        {
            const int width  = 64;
            const int height = 1;

            var bitmap = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null);
            var pixels = new uint[width * height];

            for (var i = 1; i <= width; i++)
            {
                var t        = (double)i / width;
                var newColor = DSCore.ColorRange1D.GetColorAtParameter(colorRange, t);
                pixels[i - 1] = (uint)((255 << 24) + (newColor.Red << 16) + (newColor.Green << 8) + newColor.Blue);
            }
            bitmap.WritePixels(new Int32Rect(0, 0, width, height), pixels, width * 4, 0);

            return(bitmap);
        }
Ejemplo n.º 2
0
        private void UpdateColorRange()
        {
            var s = dynamoViewModel.Model.Scheduler;

            // prevent data race by running on scheduler
            var t = new DelegateBasedAsyncTask(s, () =>
            {
                colorRange = colorRangeNode.ComputeColorRange(dynamoModel.EngineController);
            });

            // then update on the ui thread
            t.ThenSend((_) =>
            {
                var bmp = CreateColorRangeBitmap(colorRange);
                gradientImage.Source = bmp;
            }, syncContext);

            s.ScheduleForExecution(t);
        }