[cairo] problem with BitBlt

Michael Gurnett gurnett at glocalnet.net
Sun Aug 31 03:11:33 PDT 2008


Why would you want to paint the background red with and 100% opaque (no transparancy). What you explain later on is the problem I have. The background colour would not be unexpected if the correct procedure as used. It is just a question of the correct approach.
  ----- Original Message ----- 
  From: Mukul Sharma 
  To: Michael Gurnett 
  Cc: cairo at cairographics.org 
  Sent: Sunday, August 31, 2008 11:23 AM
  Subject: Re: [cairo] problem with BitBlt


  Ohk.

  Use cairo_set_source_rgba(1,0,0,1);
  and then use cairo_paint();

  I think, this would work. On a sidenote, having a transparent background can give you unexpected background color. I had tried doing the same thing, but eventually settled on having a known background color as compared to having a transparent background. For example, when I had a transparent background, I obtained a black background. Thus, I painted it all in white and then performed my drawings.

  I cannot support your guess that BitBlt does not support Alpha values. Because, BitBlt is simply a method to transfer a value of colour. The value of color is calculated at Cairo's End and rendered at the Display end. Thus, if Alpha values are not supported somewhere, it would be your display and AFAK it cannot be BitBlt part or Cairo part.

  Regards
  Mukul


  On Sun, Aug 31, 2008 at 2:10 AM, Michael Gurnett <gurnett at glocalnet.net> wrote:

    Tried with cairo_paint_with_alpha, but that didn't seem to work.


      ----- Original Message ----- 
      From: Michael Gurnett 
      To: cairo at cairographics.org 
      Sent: Sunday, August 31, 2008 2:27 AM
      Subject: [cairo] problem with BitBlt


      I have the following bit of code

      bckgrnd = new Graphics::TBitmap;
         bckgrnd->Width = ClientWidth;
         bckgrnd->Height = ClientHeight;
       HDC hdc;
       hdc=bckgrnd->Canvas->Handle;
        cairo_pattern_t *pat;
       cairo_surface_t *surface;

       surface = cairo_win32_surface_create (hdc);
       background = cairo_create (surface);

      ....


      The idea is the to draw on the background surface and BitBlt it on my paint routine. However, with the code above it appears that the initial drawing space is filled white (guessing rgba are all 1). Is there a way to get the initial drawing region to be transparant. 

      Thanks

      Michael


--------------------------------------------------------------------------


      _______________________________________________
      cairo mailing list
      cairo at cairographics.org
      http://lists.cairographics.org/mailman/listinfo/cairo

    _______________________________________________
    cairo mailing list
    cairo at cairographics.org
    http://lists.cairographics.org/mailman/listinfo/cairo




  -- 
  Thanks and Regards,

  Mukul Sharma
  Centre for High Performance Embedded Systems
  Nanyang Technological University, Singapore

  "A person who runs from responsibilities, runs from life."

  "It is easy to hate and it is difficult to love. This is how the whole scheme of things works. All good things are difficult to achieve; and bad things are very easy to get."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.cairographics.org/archives/cairo/attachments/20080831/ceb788b2/attachment.htm 


More information about the cairo mailing list