how to create a brush with a transparent bitmap

I need to fill polygons with a certain pattern and a certain color. This is most easilly done with a patterned brush.
However the pattern must be transparent.( it must consist of one transparent part an one coloured part) It must work just  like a mask, but a mask only works on other bit arrays. What i need is more like another predefined hatchbrush.
These will work with any color, but i need a lot more patterns.  

It is possible to create a brush with CreatePatternBrush() (windows API), but with this method the background is affected.(NOT transparent)

In short: I need a way to create a brush with any pattern(not the predefined rubbish) and any color that must be partially transparent.

It must be a solution that will work with windows API calls only, not with OWL or something like that.
molli500Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

molli500Author Commented:
Edited text of question
0
Tommy HuiEngineerCommented:
There isn't anything in Windows that knows about transparencies other than cursors and icons. You will need to write the code yourself if you want transparent brushes.
0
RONSLOWCommented:
Masks and bitmap operations are the best way to achieve this.

0
molli500Author Commented:
Masks and bitmap operations don't work with the predefined draw functions. That is why I need a brush. I can very probably program my way around this by using masks and such, but thta is what i am trying to avoid. One answer suggested this, but that wasn't the question. What I need is a brush that will not affect the background except where its pattern is. It should be possible to use any colour for any pattern.
0
SprocketCommented:
HDC hdc = GetDC(m_hWnd);

if (hdc)
{
long x=0, y=0, width=0, height=0;
            
            if (m_HorzDrag.size())
            {
                  HBRUSH hOld = (HBRUSH)SelectObject(hdc, m_hBrush);

                  x = m_recHDrag.left;
                  y = m_recHDrag.top;
                  width  = m_recHDrag.right -x;
                  height = m_recHDrag.bottom-y;

                  PatBlt(hdc, x, y, width, height, PATINVERT);
                  SelectObject(hdc, hOld);
            }
            if (m_VertDrag.size())
            {
                  HBRUSH hOld = (HBRUSH)SelectObject(hdc, m_hBrush);

                  x = m_recVDrag.left;
                  y = m_recVDrag.top;
                  width  = m_recVDrag.right -x;
                  height = m_recVDrag.bottom-y;

                  PatBlt(hdc, x, y, width, height, PATINVERT);
                  SelectObject(hdc, hOld);
            }

            ReleaseDC(m_hWnd, hdc);
      }
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Development

From novice to tech pro — start learning today.