DrawImage函数旋转、反射和扭曲图像

  
    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

原文地址:https://www.cnblogs.com/hgy413/p/3693616.html