📄 book_text7.htm
字号:
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">总而言之,进行屏幕输出的规则如下:</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">第一
必须通过</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CDC</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">对象进行屏幕输出;</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第二</SPAN><SPAN
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"> </SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">设置<SPAN
lang=EN-US>DC对象的输出属性;</SPAN></SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第三</SPAN><SPAN
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"> </SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">选择绘图工具</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">第四
用</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CDC</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">对象的绘图函数。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; TEXT-INDENT: 20pt; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">有关屏幕输出的内容就介绍到这里。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<H3 style="mso-line-height-alt: 1.3pt"><A name=_Toc419881636><SPAN
lang=EN-US
style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: Times New Roman; mso-bookmark: _Toc419740454">2.4
有关屏幕映射方式</SPAN></A><SPAN lang=EN-US
style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'"><O:P>
</O:P></SPAN></H3>
<P class=MsoBodyTextIndent3
style="WORD-BREAK: normal; TEXT-AUTOSPACE: ideograph-numeric; mso-line-height-alt: 1.3pt; punctuation-wrap: hanging"><SPAN
style="mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在一般的情况之下,我们都以像素作为绘图的单位,我们称之为设备坐标。我们在进行绘图操作的时候,不可避免的要用到设备坐标系。</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="TEXT-INDENT: 20pt; mso-line-height-alt: 1.3pt"><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">WINDOWS</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">提供了几种映射方式,或称坐标系。可以通过它们来和设备上下文相联系。比方说不管是什么样的显示设备,如果我们需要在上面显示一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">2</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">英寸高,</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">2</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">英寸宽的矩形,该怎样处理呢?这就要依赖于我们所设定的坐标系。如果我们指定了</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">MM_TEXT
</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方式,这时坐标原点就位于屏幕的左上角,</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">X</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">轴和</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">Y</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">轴的方向分别指向我们面对屏幕的右方和下方,它的绘图单位是像素,如果一英寸对应</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">72</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">个像素的话,我们就需要这样绘制这个矩形:</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal style="mso-line-height-alt: 1.3pt"><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">DC.Rectangle(CRect(
0,0,72*2,72*2));<O:P> </O:P></SPAN></P>
<P class=MsoNormal
style="TEXT-INDENT: 20pt; mso-line-height-alt: 1.3pt"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">所以我们如果我们指定了</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">MM_LOENGLISH
</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方式,那么一个绘图单位就是百分之一英寸,坐标原点仍然位于屏幕的左上角,但是</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">X</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">轴和</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">Y</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">轴</SPAN><SPAN
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"> </SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的方向恰好和</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">MM_TEXT</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方式下的轴方向相反,同样完成绘制上面提到的矩形的工作,我们就需要写出这样的代码:</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal style="mso-line-height-alt: 1.3pt"><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">DC.Rectangle(CRect(0,0,200,_200));<O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="TEXT-INDENT: 20pt; mso-line-height-alt: 1.3pt"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">可见,坐标系的选择对我们编写程序有很大的影响。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="TEXT-INDENT: 20pt; mso-line-height-alt: 1.3pt"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">此外,在有些时候,我们需要在几个不同的坐标系下面工作,那么还需要在进行在这些坐标系之间的转换工作。所以</SPAN><SPAN
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"> </SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">,我们有必要在这里详细介绍以下</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">WINDOWS</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的坐标映射方法。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="TEXT-INDENT: 20pt; mso-line-height-alt: 1.3pt"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">一般来说,最常用的就是</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">WM_TEXT</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方式。在</SPAN><SPAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -