设为首页 加入收藏

TOP

图形基础(二十八)
2010-12-30 21:10:52 来源: 作者: 【 】 浏览:40189
Tags:图形 基础
AINT:
hdc = BeginPaint (hwnd, &ps) ;

MoveToEx (hdc, 0, cyClient / 2, NULL) ;
LineTo (hdc, cxClient, cyClient / 2) ;

for (i = 0 ; i < NUM ; i++)
{
apt[i].x = i * cxClient / NUM ;
apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;
}

Polyline (hdc, apt, NUM) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

这个程式有一个含有1000个POINT结构的阵列。随著for回圈从0增加到999,结构的x成员设定为从0递增到数值cxClient。结构的y成员设定为一个周期的正弦曲线值,并被放大以填满显示区域。整个曲线的绘制仅仅使用了一个Polyline呼叫。因为Polyline函式是在装置驱动程式层次上实作的,因此它要比呼叫1000次LineTo快得多,结果如图5-5所示。


 

图5-5 SINEWAVE显示

边界框函式
 

下面我想讨论的是Arc函式,它绘制椭圆曲线。然而,如果不先讨论一下Ellipse函式,那么Arc函式将难以理解;而如果不先讨论Rectangle函式,那么Ellipse函式又将难以理解;而如果讨论Ellipse和Rectangle函式,那么我又会讨论RoundRect、Chord和Pie函式。

问题在於,Rectangle、Ellipse、RoundRect、Chord和Pie函式严格来说不是画线函式。没错,这些函式是在画线,但它们同时又填入画刷填入一个封闭区域。这个画刷内定为白色,因此当您第一次使用这些函式时,您可能不会注意到它们不只是画线。严格地说,这些函式属於後面「填入区域」的小节,不过,我还是在这里讨论它们。

上面提到的函式有一个共同特性,即它们都是依据一个矩形边界框来绘图

首页 上一页 25 26 27 28 29 30 31 下一页 尾页 28/83/83
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇键盘 下一篇输出文字

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: