Forum Discussion

newchannel's avatar
newchannel
Roku Guru
12 years ago

Centering the Bitmap for both for HD and SD?

I have a bitmap that is centered in HD mode but in SD mode the image is off to the bottom right corner. And, if I center the bitmap image for the SD mode, then it makes the HD bitmap image go to the upper right.

What parameter determines how to use a bitmap image from the package and have it centered for both HD and SD? The 0,0 for the x,y with canvas.drawobject right? But making the image centered for each HD and SD isn't working for me and not sure what to change.

  bmp=createobject("roBitmap","pkg:/images/xxxxx1280x720.png")
bmp.setAlphaEnable(true)

canvas.drawobject(0,0,bmp)
canvas.swapbuffers()

5 Replies

  • You are calling swapBuffers() and drawObject(), so i figure "canvas" is roScreen and not roImageCanvas?
    If you create roScreen without specifying dimensions, it will use native resolution - which differ for HD and SD modes (spoiler alert. HD has more pixels). So you either have to place images at different coordinates manually - or force the same resolution, read http://sdkdocs.roku.com/display/sdkdoc/roScreen for more.
  • For this line of code:

    canvas=CreateObject("roScreen",TRUE) 'user interface

    I made an attempt to make it as canvas=CreateObject("roScreen",TRUE, 1280, 720) 'user interface just to see what the result would be. The bitmap image loaded centered but then the video was playing in only the top left corner.

    I know with the channel images there is HD setting and an SD setting so I need to figure out how to set it so that the proper image will load for each dimension.

    I see the following area in the code. Is this the area I should be focusing on in order to set a bit map for the HD and a different one for the SD?

         bmp=createobject("roBitmap","pkg:/images/xxxxx.png")
    bmp.setAlphaEnable(true)

    canvas.drawobject(0,0,bmp)
    canvas.swapbuffers()
  • destruk's avatar
    destruk
    Streaming Star
    You can probably check the rodeviceinfo for the current screen resolution or type setting.
    Any of these would suffice --


    Function GetDisplayType()
    Return CreateObject("roDeviceInfo").GetDisplayType()
    '4x3 standard
    '16x9 anamorphic
    'HDTV
    End Function

    Function GetDisplayMode()
    Return CreateObject("roDeviceInfo").GetDisplayMode()
    '480i
    '720p
    End Function

    Function GetDisplayAspectRatio()
    Return CreateObject("roDeviceInfo").GetDisplayAspectRatio()
    '4x3
    '16x9
    End Function

    Function GetDisplaySize()
    Return CreateObject("roDeviceInfo").GetDisplaySize()
    'Associative Array with values W for width and h for height
    '{w:1080 h:720}
    End Function


    You would put your hook to load the graphic you want based on the result of any of these functions.
  • I have the following:

       'Resolution-specific settings:
    mode=CreateObject("roDeviceInfo").GetDisplayType()
    If mode="HDTV"
    layout={
    full: {x:0,y:0,w:canvas.GetWidth(),h:canvas.GetHeight()}
    top: { x: 0, y: 0, w:1280, h: 130 }
    left: { x: 249, y: 177, w: 391, h: 291 }
    right: { x: 700, y: 177, w: 350, h: 291 }
    bottom: { x: 249, y: 500, w: 780, h: 300 }
    }
    'background="pkg:/images/back-hd.jpg"
    headerfont=fonts.Get("lmroman10 caps",50,50,FALSE)
    Else
    layout={
    full: {x:0,y:0,w:canvas.GetWidth(),h:canvas.GetHeight()}
    top: { x: 0, y: 0, w: 720, h: 80 }
    left: { x: 100, y: 100, w: 280, h: 210 }
    right: { x: 400, y: 100, w: 220, h: 210 }
    bottom: { x: 100, y: 340, w: 520, h: 140 }
    }
    'background="pkg:/images/back-sd.jpg"
    headerfont=fonts.Get("lmroman10 caps",30,50,FALSE)
    End If



    And have the following with the bitmap image that I want to use that is in my images folder.

       bmp=createobject("roBitmap","pkg:/images/.png")
    bmp.setAlphaEnable(true)

    canvas.drawobject(0,0,bmp)
    canvas.swapbuffers()
    startupcomplete=false



    In the first set of code above, what does the back-sd.jpg refer too? It's not an image that I have. Is it just the background that the bitmap is being drawn over?
  • In case it is helpful to other code newbies, I used this per Joel and it fixed it:

    [code]If mode="HDTV" then

    bmp=createobject("roBitmap","pkg:/images/xxxxx_HD.png")

    else

    bmp=createobject("roBitmap","pkg:/images/xxxxxx_SD.png")

    end if[/code]