OK, I solved this one.
If you want to take a TColor and find the equivalent ULong_t for the
argument of a TGFrame (which specifies the background colour) this is how
to do it. You need to know the colour number identifier (select
View->Colors from a TCanvas) which is referred to here as 'i':
float red = gROOT->GetColor(i)->GetRed();
float blue = gROOT->GetColor(i)->GetBlue();
float green = gROOT->GetColor(i)->GetGreen();
int redbit = (int)(red*31);
int greenbit = (int)(green*63);
int bluebit = (int)(blue*31);
ULong_t colourindex = (redbit<<11)+(greenbit<<5)+bluebit;
Then just give colourindex as the TGFrame argument like:
new TGFrame(gClient->GetRoot(), 32, 32, 0, colourindex);
cheers,
Simon
On Fri, 9 Aug 2002, Simon Dean wrote:
> Hi Fons,
>
> Thanks for the reply, although it did not solve the problem. You see, the
> tutorial you quote deals with TCanvas and TPad, both classes which inherit
> from TAttFill. This class uses the TColor system and is very user-friendly
> and nice. My original problem, however, was that TGFrame does not inherit
> from TAttFill and instead takes an ULong_t as an argument to specify the
> background colour.
>
> I can't find a way of translating between a TColor and the equivalent
> ULong_t pixel number. Is there such a system?
>
> Thanks a lot,
>
> Simon
>
> On 9 Aug 2002, Fons Rademakers wrote:
>
> > Yes it is possible, check $ROOTSYS/tutorials/greyscale.C.
> >
> > Cheers, Fons.
> >
> >
> >
> > On Thu, 2002-08-08 at 21:08, Simon Dean wrote:
> > > Hello,
> > >
> > > I would like to make a TH1F and a TGFrame the same colour. This seems to
> > > be impossible because TH1s use the TColor scheme and TGFrames require a
> > > pixel number. Is it possible?
> > >
> > > cheers,
> > >
> > > Simon
> >
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:04 MET