大佬们好,萌新刚刚接触easyx,想请教大家用什么方法能绘制出没有锯齿的平滑的直线或者圆。如果有大佬能为小弟指出一条明路,感谢不尽。
我现在采用的方法是把直线先画在另外一个2*2倍的图上,原图中的一个点对应新图4个,将这4个的均值像素值花在原图上,效果不错,但是时间非常慢,一秒左右,请问大佬有什么方法能够快一点(比如不用getpixel)?
const int scr_width = 800, scr_height = 600;
COLORREF temp[800][600];
BYTE r, g, b;
COLORREF c1,c2,c3,c4;
IMAGE* img2 = new IMAGE(2*scr_width, 2*scr_height);//生成2*2新图像
setbkcolor(BLACK);
cleardevice();
//在新图像画线
SetWorkingImage(img2);
setcolor(YELLOW);
setlinestyle(PS_SOLID | PS_JOIN_BEVEL, 10);
line(600, 400, 300, 240);
//计算均值
for (int i = 0; i <= scr_width-1; i++) {
for (int j = 0; j <= scr_height-1; j++) {
c1 = getpixel(2*i,2* j);
c2 = getpixel(2*i+1,2*j);
c3= getpixel(2*i, 2*j+1);
c4= getpixel(2*i+1,2*j+1);
r = (GetRValue(c1) + GetRValue(c2) + GetRValue(c3) + GetRValue(c4)) / 4;
g = (GetGValue(c1) + GetGValue(c2) + GetGValue(c3) + GetGValue(c4)) / 4;
b = (GetBValue(c1) + GetBValue(c2) + GetBValue(c3) + GetBValue(c4)) / 4;
temp[i][j]=RGB(r,g,b);
}
}
//在窗口绘图
SetWorkingImage(NULL);
for (int i = 0; i <= scr_width - 1; i++) {
for (int j = 0; j <= scr_height - 1; j++) {
putpixel(i, j, temp[i][j]);
}
}




