📄 untitled-16.txt
字号:
第2章在窗口中绘图45
dc.L。neTo(0, 100);
想接着前一条线再画一条线时,只需再次调用LineTo。由于第一次调用LineTo时当前位置
已设置在线的终点,这里就不需要第二次调用MoveTo了:
dc. MoveTo( 0, 0);
dc.L。。eTc(0, 100);
dc.L。neTo(100, 100);
运用Polyline或PolylineTo可以一次画多条线。两者间的区别在于: P0lylineTO使用设备
描述表的当前位置,而Polyline则不需要。下面的语句绘制一个方框,该方框从描述顶边的
点到另一边的距离为100单位:
POINT aPoints」=( 0, 0, 0,工00, 100, 100, 100, 0, 0, o 3;
dc.Polyl。ne(aPolnt, 5);
下面的语句运用P0lylineTo画了同样的一个方框:
dc. MoveTo( 0, 0);
POINT aPo。"t[4]= 0, 100,工00, 100, 100, O, O, OI;
dc.Polyl。neTo(aPo。nt, 4);
当PolylineTo返回时,当前位置设在最后一条线段的终点上——这里是点(0,0)。如果
使用的是Polylne,则当前位置不变。
Charles Petzold的《Prosrammins Windows)中有一个很好的例子。它展示了折线的用处以
及为什么折线有用。下面的OnPaint函数基本上只是Charles程序的MFC改版。它实现的功
能是用 CDC:: P0lyline在窗口内画一条正弦曲线。
#工flCh*B< ffi己th.h>
# define SEGMENTS 500
# dGfiflB PI3.1415926
void CMainwindow:: onPaint()
3
CRect rect;
GetCI。e。tRect(&rect);
i。t nw。dth= rect.Width();
i。t。He。ght= rect.Height();
CPaintDC dc(this);
CPo。nt aPo。nt卜EGMENTS」;
for(。nt。= 0;。< SEGMENTS;。、+)
。Point{i」. x=( i。 "width)/ SzGMENTS;
aPo。nt[l」y=(。nt)((nHejght/2)。
(1-(。in《2。 PI。 i)/ SEGMENTS》》;
I
1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -