Так и не понял, в чем вопрос.
"Как брать цвет с объектов вне колорпикера" ? — делать снимок root в битмапдату и брать из нее пиксель;
"Как поставить маркеры колорпикера и задать базовый цвет квадрата для полученного извне значения" ? — пересчитать HSV "обратно".
// у Вас как то сложно все сделано, куча битмапдат, попиксельное заполнение — зачем? Делаете квадрат базового цвета (из спектрумбара, Н), поверх него квадрат с градиентом белого от прозрачного до непрозрачного, и третий квадрат с градиентом черного. Теперь все, что нужно — менять цвет базового квадрата дравРектом. Все на векторных шейпах, никаких битмап. Цвет РАССЧИТЫВАЕТЕ (a не берете пиксель с квадрата!) из координат маркера внутри квадрата и координаты Y маркера в спектрумбаре.
Добавлено через 5 минут
Да, Вам понадобится класс для пересчета HSV

Код AS3:
package gui.wysiwyg.toolbar.plugins.colorbox
{
public class HSV
{
//-----------------------------------------------------------------------------------------------
// RGB value from Hue, Saturation and Brightness values
//-----------------------------------------------------------------------------------------------
public static function toRGB(h:Number, s:Number, v:Number):uint
{
var r:Number, g:Number, b:Number;
var i:int;
var f:Number, p:Number, q:Number, t:Number;
if (s == 0)
{
r = g = b = v;
return (Math.round(r * 255) << 16) + (Math.round(g * 255) << 8) + Math.round(b * 255);
}
if (h == 360) h = 0;
h /= 60;
i = Math.floor(h);
f = h - i;
p = v * (1 - s);
q = v * (1 - s * f);
t = v * (1 - s * (1 - f));
switch(i)
{
case 0: r = v; g = t; b = p; break;
case 1: r = q; g = v; b = p; break;
case 2: r = p; g = v; b = t; break;
case 3: r = p; g = q; b = v; break;
case 4: r = t; g = p; b = v; break;
default: r = v; g = p; b = q; break;
}
return (Math.round(r * 255) << 16) + (Math.round(g * 255) << 8) + Math.round(b * 255);
}
//-----------------------------------------------------------------------------------------------
// HSV value from Red, Green and Blue values
//-----------------------------------------------------------------------------------------------
public static function toHSV(r:uint, g:uint, b:uint):Array
{
var max:Number = Math.max(r, g, b);
var min:Number = Math.min(r, g, b);
var h:Number = 0;
var s:Number = max != 0 ? (1 - min / max) * 100 : 0;
var v:Number = (max / 255) * 100;
if((r==g) && (g==b)) h = 0;
else if(r>=g && g>=b) h = 60*(g-b)/(r-b);
else if(g>=r && r>=b) h = 60 + 60*(g-r)/(g-b);
else if(g>=b && b>=r) h = 120 + 60*(b-r)/(g-r);
else if(b>=g && g>=r) h = 180 + 60*(b-g)/(b-r);
else if(b>=r && r>=g) h = 240 + 60*(r-g)/(b-g);
else if(r>=b && b>=g) h = 300 + 60*(r-b)/(r-g);
else h = 0;
h = Math.min(360, Math.max(0, Math.round(h)));
s = Math.min(1, Math.max(0, Math.round(s) / 100));
v = Math.min(1, Math.max(0, Math.round(v) / 100));
return [h, s, v];
}
}
}