Hi.
I am having some difficulty getting SVG background attached.
I don’t understand why
pGraphics->AttachPanelBackground(NEL_TUNGSTEN);
pGraphics->AttachSVGBackground (GEN_DIAL);
hides the SVG, even tho bg is transparent in the SVG.
If I comment out the pGraphics->AttachPanelBackground(NEL_TUNGSTEN);
then the SVG is drawn with a bright blue background which I haven’t specified, and also my animations don’t seem to refresh properly, like the background isn’t been drawn again?
I’m not sure I understand the Layers thing. I noticed in the AttachSVGBackground
method
IControl* pBG = new ISVGControl(GetBounds(), LoadSVG(fileName), true);
that the true
at the end, refers to a Use Layers flag.
If I put that code in directly in my setup, and set that flag to false, then I get the redrawing behaviour I expect… like this
pGraphics->AttachPanelBackground(NEL_TUNGSTEN); pGraphics->AttachControl(new ISVGControl(pGraphics->GetBounds(), pGraphics->LoadSVG(GEN_DIAL), false));
So what’s the right way to use AttachSVGBackground
?
Is there any transparency in the SVG?
If I fill a background color with ISVGControl, it draws correctly
class ISVGControl : public IControl
{
public:
ISVGControl(const IRECT& bounds, const ISVG& svg, bool useLayer = false)
: IControl(bounds)
, mSVG(svg)
, mUseLayer(useLayer)
{}
virtual ~ISVGControl() {}
void Draw(IGraphics& g) override
{
if(mUseLayer)
{
g.FillRect(COLOR_WHITE, mRECT); // added this
yes, the SVG background is transparent.
You can’t really have a transparent SVG as background because what is it going to show through to? We don’t support transparent windows, It will just show through to garbage in the framebuffer
I thought it might show the AttachPanelBackground(NEL_TUNGSTEN);
colour background
hmm it should in that case …
… you can’t attach a panel background AND an SVG background. There can only be one background control (index #0). Attach an ISVGControl using pGraphics->AttachControl() for the SVG, after AttachPanelBackground()
Thanks for the info. I tried the way you suggested but by SVG is quite complex and the frame rate slowed.
I tried the same SVG with a solid rectangle included in it as a background and attached that as background and the frame rate is maintained ( nice and responsive ) so I’ll choose that route for now
Thanks!
You can also set the use layer argument true which will cache the SVG to a bitmap