• 0

PMOD MTDS BitBlt() question


Hi, I am working with the PMOD MTDS display on the Arduino platform. I'd like to ask about the operation of the bit block transfer function, BitBlt(), when combining colour and monochrome bitmaps.

In the example code MtdsDemo1, function MtdsTest23(), there is an example of this which has some text rendered as colour loaded to noe section of the display and some monochrome-rendered text loaded to another section.

I would like to have a colour bitmap and a mono bitmap overlaid (e.g. each bitmap is the full size of the display). I'm using the ROP code  ropSrcPaint to 'OR' the mono bitmap content with the colour bitmap. This causes corruption in the resulting image, however.

FYI, I can successfully merge two mono or two colour bitmaps in this way, but it doesn't work with one colour and one mono bitmap. The following lines of code just outline how I'm creating and loading the bitmaps, but are hopefully enough to explain what I'm trying to do:

hdsColor = mtds.GetDs();
hbmpColor = mtds.CreateBitmap(240, 320, 16);
mtds.SetDrawingSurface(hdsColor, hbmpColor);

hdsMono = mtds.GetDs();
hbmpMono = mtds.CreateBitmap(240, 320, 1);
mtds.SetDrawingSurface(hdsMono, hbmpMono);

mtds.BitBlt(hdsDisp, 0, 0, 240, 320, hdsColor, 0, 0, ropSrcCopy);

mtds.BitBlt(hdsDisp, 0, 0, 240, 320, hdsMono, 0, 0, ropSrcPaint);

This approach causes corruption in the resulting image.

If, however, I create the mono bitmap as 16 bit, it works fine (likewise, if I change the colour bitmap to 1 bit).

Perhaps this is expected behaviour, or maybe I'm missing something?


Share this post

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Hi @jamesW,

The behavior you are describing is what we would expect when altering the the size of the bitmap. I would first suggest trying to overload the function.  This approach would likely be the easiest to alter the bitmap size. The other approach would be to create a new function to handle these different bitmap size and color/mono.

best regards,


Share this post

Link to post
Share on other sites
  • 0

Hi Jon,

Thanks for the quick reply. Apologies, I may not have been clear; I want to keep the bitmap sizes the same throughout (e.g. 320x240). The issue is when I load two bitmaps to the display.

To give you an idea of the application, I have a histogram which is continually updated and is stored as a 320x240 bitmap. I have another bitmap which is the background screen, also 320x240. I use BitBlt() to render the background to the display (ROP code  ropSrcCopy), and use it again to overlay the histogram (using ROP code ropSrcPaint). 

If both bitmaps are mono, this works fine. If both are colour, this also works fine. However, if one is mono and the other is colour, the resulting image is corrupted. So I'm wondering if overlaying mono and colour bitmaps is possible, or does the bit depth of each have to be the same?


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now