I wrote a small color picker code my self and it works well. However the issue, when I move the slide to get a selected color (RGB) the canvas(gradient of white black and selected color is taking time. The delay is because of code:

The code is as follows:
Try
'Dim converter As New SlidertoColor
'Dim cornercolor As Color = converter.Convert(MySlider.Value, Nothing, Nothing, Nothing)
Dim cornercolor As Color = Value
Dim y As Integer = 0
Dim x As Integer = 0
Dim wb As New WriteableBitmap(256, 256, 96, 96, PixelFormats.Pbgra32, Nothing)
Dim stride As Integer = CInt((wb.PixelWidth * wb.Format.BitsPerPixel) / 8)
Dim RD As Decimal = cornercolor.R / 255
Dim GD As Decimal = cornercolor.G / 255
Dim BD As Decimal = cornercolor.B / 255
Dim r As Decimal = cornercolor.R
Dim g As Decimal = cornercolor.G
Dim b As Decimal = cornercolor.B
Dim lr As New List(Of Decimal)
Dim lb As New List(Of Decimal)
Dim lg As New List(Of Decimal)
Try
For i = 0 To 255
lr.Add(r)
r = r - RD
lg.Add(g)
g = g - GD
lb.Add(b)
b = b - BD
Next
Catch ex As Exception
End Try
r = cornercolor.R
g = cornercolor.G
b = cornercolor.B
'For y = 255 To 0 Step -1
For y = 0 To 255
RD = ((255 - y) - lr(y)) / 255
GD = ((255 - y) - lg(y)) / 255
BD = ((255 - y) - lb(y)) / 255
If RD < 0 Then
RD = RD * -1
End If
If GD < 0 Then
GD = GD * -1
End If
If BD < 0 Then
BD = BD * -1
End If
'Need to work on this section
r = 255 - y
g = 255 - y
b = 255 - y
For x = 0 To 255
Try
Dim colorData As Byte() = {
CByte(b),
CByte(g),
CByte(r),
CByte(255)}
Dim rect As New Int32Rect(x, y, 1, 1)
wb.WritePixels(rect, colorData, stride, 0)
r = r - RD
g = g - GD
b = b - BD
If r < 0 Then
r = 0
End If
If g < 0 Then
g = 0
End If
If b < 0 Then
b = 0
End If
Catch ex As Exception
End Try
Next
Next
'Dim colorData As Byte() = {CByte(blue), CByte(green),
' CByte(red), CByte(255)}
'Dim rect As New Int32Rect(x, y, 1, 1)
'Try
' wb.WritePixels(rect, colorData, stride, 0)
'Catch ex As Exception
'End Try
Dim k As New ImageBrush
k.ImageSource = wb
Return k
Could you please tell my how to speed up this process, or is there a efficient way to achieve this. I know that there are free to use color pickers, but I want to try my own.
I am using VB.Net, WPF.
Thank you.
Found the answer, it seems that the gradient chart is also produced exactly the same way by using the xaml as follows:
Thank you for your support.