[cairo] How to take cairo_set_source_rgb effect for different color points?
Chris Wilson
chris at chris-wilson.co.uk
Sun Oct 6 02:05:02 PDT 2013
On Sun, Oct 06, 2013 at 03:50:59PM +0800, Leslie Zhai wrote:
> Hi cairo developers,
>
> I wanna draw some points indicating mouse`s X and Y, and used random
> number from 0 to 255 for RGB color of the points, such as:
>
> for loop
> {
>
> double r = Map(i, 0, 100, 0, 255); // Re-maps a number from one
> range to another
> [1]http://www.openframeworks.cc/documentation/math/ofMath.html#show_ofMap
> double g =
> 0;
> double b = 255 -
> r;
>
> cairo_set_source_rgb(c, r / 255.0, g / 255.0, b /
> 255.0);
> cairo_move_to(c, x,
> y);
>
> cairo_close_path(c);
> }
> cairo_stroke(c);
>
> It is unable to put cairo_stroke into the for loop, it might be a heavy
> operation when draw the path too often.
> But cairo_set_source_rgb failed to take effect in the loop if cairo_stroke
> was outside.
>
> The source code is available via
> [2]https://github.com/xiangzhai/grt/tree/master/GRTExamples/ClassificationModulesExamples/CairoX11DTWExample
>
> So how to take cairo_set_source_rgb effect for drawing different color
> points?
> Please someone give me some advice, Thanks a lot :)
You can't store color per-path as stroke/fill operate upon the path union.
For the same reason calling stroke 100 times for a simple path is likely to
be a lot cheaper than calling it once with a 100-fold more complex path.
And you probably don't want to use stroke here unless you have a wide
pen and wish to use the pen to draw dots.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the cairo
mailing list