To make pictures retina compatible, I used to add them to my project with twice the width and height and then scale them down in the paint event. I’m now converting to use Image Sets and the 2x naming convention for retina.
Sub Paint(g As Graphics, areas() As REALbasic.Rect) Handles Paint dim pic as Picture if MouseIsOver and MouseIsDown then pic = pressedIcon elseif MouseIsOver then pic = rolloverIcon else pic = enabledIcon end if // g.DrawPicture(pic, 0, 0, pic.Width/2, pic.Height/2, 0, 0, pic.Width, pic.Height) // This is how I used to do it. g.DrawPicture pic, 0, 0 // This works great for the enabledIcon, but the pressedIcon and rolloverIcon look blurry. End Sub Public Function makePressedIcon(enabledIcon as picture) as picture dim x,y as integer dim thePic as picture dim c,white as color dim hue,sat,value as double white = rgb(255,255,255) thePic = new Picture(enabledIcon.width,enabledIcon.height,32) thePic.graphics.drawpicture enabledIcon,0,0 for x = 0 to thePic.width -1 for y = 0 to thePic.height -1 c = thepic.graphics.pixel(x,y) if c <> white then hue = c.hue sat = c.saturation value = c.value c = hsv(hue,sat,value-.2) thepic.graphics.pixel(x,y) = c end if next next thePic.transparent = 1 return thePic End Function