Status DrawImage(IN Image* image, IN const PointF* destPoints, IN INT count) { if (count != 3 && count != 4) return SetStatus(InvalidParameter); ............................................. }
实现图片的反射和倾斜,只能为3-4个点,3个点依次为左上/右上/左下角,相对于图像的原始坐标映射
假设原始图像是一个矩形,其左上角、右上角和左下角分别位于 (0, 0)、(100, 0) 和 (0, 50)。
现在假设我们将这三个点按以下方式映射到目标点。
原始点目标点
左上角 (0, 0) ------ (200, 20)
右上角 (100, 0) ---- (110, 100)
左下角 (0, 50) ---- (250, 30)
示例代码:
Bitmap orgpic(_T("D:\\1.PNG")) ; Graphics g(GetDC()->GetSafeHdc()) ; PointF desPoint[] = \ { PointF(orgpic.GetWidth(),0) , //top-left--------------对应原图(0,0) PointF(orgpic.GetWidth()+orgpic.GetHeight(), orgpic.GetWidth()) ,//top-right-----对应原图(orgpic.GetWidth(),0) PointF(0,orgpic.GetHeight()) //low-left-----对应原图(0,orgpic.GetHeight()) }; g.DrawImage(&orgpic, desPoint, 3) ;顺时针旋转了45度变大。
具体可用MSDN搜Graphics Methods
http://msdn.microsoft.com/zh-cn/library/t3tye9kw.aspx