我最近在做图形一块,碰到扭曲的问题请大家指教。
假如我对单个矩形进行扭曲操作,对该巨型的路径左上点拖动扭曲改矩形,如果左上点拖动后,x.y坐标都大于右下角坐标,是没有问题的,但如果是对2个或者以上矩形进行这样的操作,则有问题,下面是测试代码,大家帮忙看下。(该代码放到任一按纽事件可以用,但前提是在VC下可以使用Gdi+,我用的是VC2005)
CDC*pdc = GetWindowDC();
Graphics graphics(pdc->m_hDC);
GraphicsPath path;   // 路径
Rect FRct(300, 300, 200,200);
path.AddRectangle(FRct);
Rect cc[2];
cc[0].X = 100;
cc[0].Y = 100;
cc[0].Width = 100;
cc[0].Height = 100; cc[1].X = 300;
cc[1].Y = 300;
cc[1].Width = 200;
cc[1].Height = 200;
path.AddRectangles(cc,2);  // 画2个矩形
path.CloseFigure(); Pen bluePen(Color(255,2,2,255),3);
graphics.DrawPath(&bluePen, &path); RectF srcRect(100,100,400,400);  // 要扭曲的路径 PointF destPts[] ={
PointF(100+2, 100+2),  /*如果改成PointF(450,450) 这样图形会不正确,但如果是一个矩形,则没有这个问题*/
PointF(500, 100),
PointF(100+2, 500+2),
PointF(500+2, 500+2)};
path.Warp(destPts, 4, srcRect);    // 扭曲路径
Pen RedPen(Color(255,255,0,0),3);
graphics.DrawPath(&RedPen, &path);