这个算是差值吧,不过还没完成,效果比较差, 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用渐色的方法排列,这样出图效果会更好。
bitmap.CreateCompatibleBitmap(pDC, xGrid*Grid, yGrid);
我是通过SetPixel打点绘制的,要在这把128的点放进189的尺寸中。
要进行判断,1或2个格子放同一个点,这个该怎么做??
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用渐色的方法排列,这样出图效果会更好。