Platforms to show: All Mac Windows Linux Cross-Platform
FAQ.How to duplicate a picture with mask or alpha channel?
Answer:
You can use code like this function:
Example
Function Duplicate(extends p as Picture) As Picture #if RBVersion >= 2011.04 then if p.HasAlphaChannel then // create nw picture and copy content: dim q as new Picture(p.Width, p.Height) q.Graphics.DrawPicture p,0 ,0 Return q end if #endif // create new picture dim q as new Picture(p.Width, p.Height, 32 ) // get mask dim oldMask as Picture = p.mask(false ) if oldMask = nil then // no mask, so simple copy q.Graphics.DrawPicture p,0 ,0 Return q end if // remove mask p.mask = nil // copy picture and mask q.Graphics.DrawPicture p, 0 , 0 q.mask.Graphics.DrawPicture oldMask,0 ,0 // restore mask p.mask = oldmask Return qEnd Function
Simply copy it to a module and call it like this: q = p.duplicate.
The code above works with old Xojo versions because of the #if even if your RS version does not support alpha channel pictures. This way it's future proof.