Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 29/06/2017 at 03:03, xxxxxxxx wrote:
User Information: Cinema 4D Version: R18 Platform: Windows ; Language(s) : C++ ;
--------- Hello.
I have a GeUserArea and I inherit its DrawMsg to draw 2 bitmaps on top of each other. First, I use DrawBitmap to draw the background image and then I draw the topmost bitmap which requires BMP_ALLOWALPHA .
The problem is that using BMP_ALLOWALPHA shows the background color DrawSetPen(COLOR_BG) instead of the background image.
How can I fix that ?
Thank you.
On 29/06/2017 at 11:30, xxxxxxxx wrote:
As far as I know, the only solution is to use a GeClipMap. However, that class does only support direct blitting, without scaling.. Doing the scaling in C++ is pretty darn slow on bigger images and causes my dialog to lag horribly when the user area is resized.
I'd love to know if there was actually a way to use DrawBitmap() with proper alpha support, too.
On 30/06/2017 at 03:11, xxxxxxxx wrote:
Hello and thank you very much for your answer.
So basically, I will set the bitmap to a GeClipMap and draw the stored bitmap, correct ? Inside DrawMsg:
BeginDraw(); BaseBitmap* base_bitmap = clip_map->GetBitmap(); DrawBitmap(base_bitmap, ........); EndDraw();
I couldn't find any reference in the examples.
On 30/06/2017 at 03:29, xxxxxxxx wrote:
You would need to create a GeClipMap on which you combine the two BaseBitmaps to get your final "image" that you want to draw on the GeUserArea. Something like
AutoAlloc<GeClipMap> map; // cache that somewhere maybe map->BeginDraw(); map->Blit(image1, ...); map->Blit(image2, ...); map->EndDraw(); BaseBitmap* final = map->GetBitmap(); userArea->DrawBitmap(final, ...);
On 30/06/2017 at 03:56, xxxxxxxx wrote:
I don't think this is going to work because my background image is scaled since it is drawn in a GeUserArea with DrawBitmap.
I have tried using Init (BaseBitmap *bm, BaseBitmap *alpha_channel) passing the image and a black/white image indicating the transparent regiong but it didn't work
So it appears that my only solution is to use a fixed background and use GeClipMap's blit, right ?
On 06/07/2017 at 09:27, xxxxxxxx wrote:
I'm sorry, we haven't come up with any other idea here.