loImageCtrl = Createobject('Image') with loImageCtrl .Stretch = 0 .Picture = thisform.Image1.Picture lnAspect = .width / .height llLandscape = .width >= .height endwith loImage = thisform.Image1 && Your image in the form, probably stretch = 2 in here, otherwise you wouldn't need anything extra :) if llLandscape lnWidth = loImage.Width lnLeft = OBJTOCLIENT(loImage, 2) lnHeight = lnWidth / lnAspect lnTop = OBJTOCLIENT(loImage, 1) + ((loImage.Height - lnHeight) / 2) else lnHeight = loImage.Height lnWidth = lnHeight / lnAspect lnTop = OBJTOCLIENT(loImage, 1) lnLeft = OBJTOCLIENT(loImage, 2) + ((loImage.Width - lnWidth) / 2) endif lnHWnd = thisform.HWnd lnHDC = GetDC(lnHWnd) lnHDC_Mem = CreateCompatibleDC(lnHDC) lnHBitMap = CreateCompatibleBitmap(lnHDC, lnWidth, lnHeight) if lnHBitMap <> 0 lnHPrevBmp = SelectObject(lnHDC_Mem, lnHBitMap) BitBlt(lnHDC_Mem, 0, 0, lnWidth, lnHeight, lnHDC, lnLeft, lnTop, SRCCOPY) if OpenClipboard(lnHWnd) EmptyClipboard() SetClipboardData(CF_BITMAP, lnHBitMap) CloseClipboard() else * Error endif SelectObject(lnHDC_Mem, lnHPrevBmp) && Previous object should be re-selected else * Error endif DeleteDC(lnHDC_Mem) ReleaseDC(lnHWnd, lnHDC)