Я сделал это с простым градиентным изображением, которое сохранил в памяти.Затем я просто отслеживал положение мыши на изображении и просто считывал данные с изображения (которое хранилось в ОЗУ) и получал для него 32-битное значение цвета RGBA.Это проще, чем считывание пикселей с экрана (также быстрее и надежнее).
Это также позволяет гораздо более гибкий способ представления палитры, только ваше воображение ограничивает внешний вид вашей палитры.Примечание: вы должны использовать 32-битные цвета на изображении, потому что если вы хотите сгладить края, вы просто затушевываете альфа, но сохраняете цвета такими же, чтобы цвета не искажались по краям.Не забудьте включить смешивание при рендеринге изображения.