hi felix!
On Thu, Jun 26, 2008 at 05:03:32PM +0200, Felix Winkelmann wrote:
>
> This is probably a typical newbie's question, but can someone provide
> me a simple example of drawing an image with transparent background?
> I have a PNG with transparency and invoke RenderTo to blit the image
> to the screen. Running with --dfb:system=X11 (the only backend I
> tried so far), shows a black blackground instead of a transparent
> one.
>
> I tried setting DSBLIT_BLEND_ALPHACHANNEL on the screen surface, and
> various other things, but I simply can't get it to work.
>
> Any hints?
it works when you first render the image into an intermediate surface.
i think because the screen surface doesn't have an alpha channel, so
the image provider cannot render it. if you render into a surface
with alpha channel and then blit it to the screen with
DSBLIT_BLEND_ALPHACHANNEL it works.
for example: (i suppose you don't mind it's written in scheme :)
(require-extension directfb srfi-18)
(define (trans-test image-file)
(with-dfb-objects ((dfb (dfb-initialize coop-level: 'FULLSCREEN))
(primary (dfb-create-surface dfb caps: '(PRIMARY FLIPPING)
width: 800 height: 600))
(img (dfb-load-image-to-surface dfb image-file)))
(let-values (((screen-w screen-h) (dfbs-get-size primary))
((img-w img-h) (dfbs-get-size img)))
(thread-sleep! .1)
(dfbs-set-color primary 255 0 0 255)
(dfbs-fill-rectangle primary 0 0 screen-w screen-h)
(dfbs-set-blitting-flags primary '(BLEND-ALPHACHANNEL))
(dfbs-blit primary img #f
(fx/ (fx- screen-w img-w) 2)
(fx/ (fx- screen-h img-h) 2))
(dfbs-flip primary #f '())
(thread-sleep! 5))))
dfb-load-image-to-surface is defined like this (but is provided by the
chicken directfb binding):
(define (dfb-load-image-to-surface dfb filename)
(with-dfb-objects ((ip (dfb-create-image-provider dfb filename))
(s (dfb-create-surface dfb (dfbip-get-surface-description
ip))))
(dfbip-render-to ip s #f)
(dfb-give s)))
hth&bye,
hans.
_______________________________________________
directfb-users mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users