创建一个128x128的DC,通过CreateDIBitmap把数据放到些DC的中,然后再把这DC绘制到一个128x189的DC中

解决方案 »

  1.   

    创建是尺寸就是128*189的
    bitmap.CreateCompatibleBitmap(pDC, xGrid*Grid, yGrid);
    我是通过SetPixel打点绘制的,要在这把128的点放进189的尺寸中。
    要进行判断,1或2个格子放同一个点,这个该怎么做??
      

  2.   

    用 StretchBlt   缩放到128*189, 
      

  3.   

    使用StretchBlt   进行dc切割拷贝操作
      

  4.   

    http://download.csdn.net/download/mzhchen/5982213
      

  5.   

    这个算是差值吧,不过还没完成,效果比较差,
    BYTE a, r, g, b;
    int h = 550, w = 550*Grid;
    int x ,y ,idx;
    for (int j = 0; j < h; j++)
    {
    float n = j*yGrid/h;
    n -= (int)n;
    n += 0.5;
    if (n > 1)
    {
    y = j*yGrid/h + 1;
    }
    else
    {
    y = j*yGrid/h;
    }
    for (int i = 0; i < w; i++)
    {
    float v = i*xGrid/w;
    v -= (int)v;
    v += 0.5;
    if (v >= 1)
    {
    x = i*xGrid/w + 1;
    }
    else
    {
    x = i*xGrid/w;
    }
    idx = y * xGrid + x; a = (0xFF000000  & pColBuf[idx]) >> 24;
    r = (0x00FF0000  & pColBuf[idx]) >> 16;
    g = (0x0000FF00  & pColBuf[idx]) >> 8;
    b = (0x000000FF  & pColBuf[idx]); COLORREF c = ((COLORREF)(((BYTE)(r)| 
    ((WORD)((BYTE)(g))<<8))|
    (((DWORD)(BYTE)(b))<<16)));
    memdc.SetPixel(i, (h -1 - j),  c);
    }
    }
    更好的解决方法并非四舍五入,而是将Colorvalue用渐色的方法排列,这样出图效果会更好。