I’ve painted my gui and I like the background mesh for my gui. I want
my static text to inherit the background paint of my gui. Instead I get
a gray background around the static text. Here’s a picture:
How do I make it so that the background of the StaticText is
transparent?
Thanks.
On 23/01/2010 16:25, Alpha B. wrote:
I’ve painted my gui and I like the background mesh for my gui. I want
my static text to inherit the background paint of my gui. Instead I get
a gray background around the static text. Here’s a picture:
http://i780.photobucket.com/albums/yy89/jdezenzio/example_background.jpg
How do I make it so that the background of the StaticText is
transparent?
Hard to test without the code, but have you tried setting the DC’s brush
to TRANSPARENT?
eg
dc.brush = Wx::TRANSPARENT_BRUSH
Also, take a look into evt_erase_background which is specifically
designed for drawing bitmaps as a background on controls.
hth
alex
Hi Alex,
Basically, the control was created inside of DialogBlocks and extended
into
a module. The code appears like so:
@title_st_one = finder.call(“title_st_one”)
@title_st_one.extend(StaticTextControls)
I then have a module for:
module StaticTextControls
self.evt_erase_background do |event|
self.paint do |dc|
dc.brush = Wx::TRANSPARENT_BRUSH
# ??
end
end
end
I can extend into this module using @title_st_one.repaint_my_control and
I
have some of the code above. I’m not wanting to paint a bitmap onto
this
control. I just want this control to become transparent so that the
underlying bitmap which is already painted onto the parent frame shows.
Example:
Main Frame (already painted with bitmap)
– StaticTextControl (should be transparent so that it shows the Main
Frame)
I’ll read up on evt_erase_background but I’m not sure how to use the
dc.brush code you supplied with this example. Any further help would be
appreciated.
Sincerely,
Joel D.
Website Bio: http://jdezenzio.com/
Rails Production Sites: http://ncaastatpages.com
So, I took the approach I believe you were trying to get me to do. I
believe I found a partial answer but I’m still stumped.
The partial answer is that I can’t use a StaticText control and achieve
transparency. Windows will force the background to the current theme
and you can’t get around that without drawing the text on the canvas
instead.
So, I removed the StaticText control and created a small panel using the
same class and variable name.
Here’s what I have:
module StaticTextControls
def paint_text(message)
self.evt_erase_background do |event|
self.paint do |dc|
dc.set_background_mode(Wx::TRANSPARENT)
dc.set_brush(Wx::TRANSPARENT_BRUSH)
dc.draw_text(message, 5, 5)
end
end
end
end
and I call it using the following extension:
@title_st_one.paint_text(“Test for Paint”)
And here’s what it shows:
As you can see, the text is now painted on the panel and the panel is
the gray looking rectangle behind the text.
The problem I have now is how do I make the panel itself transparent so
that the window behind it (the gradient steel blue I created) shows?
Sure, I can paint a bitmap on the panel but I don’t want to paint a
bitmap image. I just want to force it to be transparent.
Any ideas on how to do this?
Thanks.