HRGN ZFX=CreatePolygonRgn(pt,4,ALTERNATE); //创建矩形获得斜矩形外框大小,用内存DC,将外框所在区域的图像画到内存位图上请教这步怎么写

解决方案 »

  1.   

    假设,这时的图像1:1显示,你的红色矩形宽w,高h:1、首先做一个函数: 
       GetAllPtOnLine(POINT p1,POINT p2,vector<POINT> &pV)
       本函数的意思是,给我两个点,这两个点连成一条线段,将经过的所有点,放到pV中。pV的元素个数将会是你新图像的宽度。2、从两条平行的对边各取一对点,这两点的连线应该平行于矩形的其余两边。套用上面函数。
        通过for循环,将所有POINT填充到h个vector<POINT>中。这时候会得到h个pV。3.每个pV就是你新图像的一行像素在原图中的坐标。去按坐标取像素值就行了。最后把h行连起来就是新图像的矩阵了。
      

  2.   

    你自己画的矩形A
    创建一个内存dc  memDC
    使用CreatePolygonRgn创建一个区域rgn,
    将rgn选入memDC
    将包含A的矩形(和屏幕平行,和A想接)区bitblt到memDC
    使用plgBlt传到目标,
      

  3.   

    这个应该就是一个坐标变换啊, 既然你已经GetPixel取得了点数据, 然后把这个点通过函数转换到你需要的点, 在新的DC下绘制出来即可.比如原来的点是在(1,1), 顺时针旋转90度后变成(1.414,0), 如果取整就是(1,0). 
    这时, GetPixel(1,1)然后SetPixel(1,0). 图像就正了.
     只是这个旋转需要计算好, 可能会有一些变形,失真,
      

  4.   

    感谢大家,通过点坐标转换后,图片终于正了,但是结果令人失望,像素降低的太明显了
    好像有很多外围轮廓阴影存在
    本人用的是cximage 先GetPixelColor 转换坐标后 再用SetPixelColor方法
    如果是不带任何角度的裁剪,无损失
    但是角度的裁剪,损失严重,具体如下图:
    请教高手们是什么原因造成的,有好的解决办法没?
      

  5.   

    用切错 (shear) 方法, 旋转 要好些,