⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_mfc架构下的directx8.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            HELPER_RELEASE(pIndexBuffer);<BR>&nbsp;&nbsp;&nbsp; 
            HELPER_RELEASE(pStreamData);<BR>&nbsp;&nbsp;&nbsp; 
            HELPER_RELEASE(pID3DDevice);<BR>&nbsp;&nbsp;&nbsp; 
            HELPER_RELEASE(pID3D);<BR>}<BR>ShutdownDirect3D释放所有的接口。将来你可能要加入额外的代码来关闭Direct3D接口,但现在已经够了。如果你运行程序,你将得到一个绿色背景的窗口。你可以按“ESC”键来退出应用程序。 

            <P>第三章 画三角形<BR>(DX8MFC2)<BR>定义你的顶点格式,Direct3D引入了一种可变形顶点格式(flexible 
            vertex 
            format)(FVF)的概念。在FVF中,你定义一个结构其中包括所需要的顶点组成部分。这个结构会随着你的程序而改变,但在这里你将初步把它定义成这个样子:<BR>struct 
            MYVERTEX<BR>{<BR>&nbsp; FLOAT x, y, z; // The transformed 
            position<BR>&nbsp; FLOAT rhw;&nbsp;&nbsp;&nbsp;&nbsp; // 1.0 
            (reciprocal of homogeneous w)<BR>&nbsp; DWORD color;&nbsp;&nbsp; // 
            The vertex 
            color<BR>};<BR>示例的开始定义了一个顶点结构,顶点的名称,和每一个三角形的顶点。在你的InitDirect3D函数中,你必须创建一个顶点缓冲区:<BR>int 
            num_elems = sizeof(vertices) / 
            sizeof(vertices[0]);<BR>pID3DDevice-&gt;CreateVertexBuffer(sizeof(MYVERTEX) 
            *<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            num_elems,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DUSAGE_WRITEONLY,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DFVF_XYZRHW|D3DFVF_DIFFUSE,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DPOOL_DEFAULT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &amp;pStreamData);<BR>函数的第一个参数是顶点结构的字节大小。在应用程序还不能读取顶点之前,传一个D3DUSAGE_WRITEONLY标记给它。这里可以有不同的标记来指定如何处理你的顶点,但现在你可以确信Direct3D已经能正确的工作了。<BR>下一步,指定我们用的是什么FVF格式。当你还没有使用坐标系预转换之前,指定为D3DFVF_XYZRHW标记。以后你使用自己的矩阵坐标系转换时,把它改成D3DFVF_XYZ。D3DFVF_DIFFUSE告诉Direct3D,我们将为每一个顶点指定颜色。D3DPOOL_DEFAULT指定内存的管理模式。<BR>最后一个参数是顶点缓冲区的指针,在例子1中你已经定义了它,但并没有用上。<BR>如果你不向顶点缓冲区填入有用数据的话,顶点缓冲区是没有用的:<BR>MYVERTEX 
            *v;<BR>pStreamData-&gt;Lock(0, 0, (BYTE**)&amp;v, 0);<BR>for(int ii 
            = 0; ii &lt; num_elems; ii++)<BR>{<BR>&nbsp; 
            v[ii].x&nbsp;&nbsp;&nbsp;&nbsp; = vertices[ii].x;<BR>&nbsp; 
            v[ii].y&nbsp;&nbsp;&nbsp;&nbsp; = vertices[ii].y;<BR>&nbsp; 
            v[ii].z&nbsp;&nbsp;&nbsp;&nbsp; = vertices[ii].z;<BR>&nbsp; 
            v[ii].rhw&nbsp;&nbsp; = vertices[ii].rhw;<BR>&nbsp; v[ii].color = 
            vertices[ii].color;<BR>}<BR>pStreamData-&gt;Unlock();<BR>这是不难理解的,Lock返回一个你想写入顶点数据的指针。下一步你从你的顶点阵列中拷贝数据。然后,反还这个指针。<BR>这一对的调用可以告诉Direct3D你的FVF格式,并设定顶点阵列为当前的活动顶点阵列。(你可以有多个顶点阵列)。<BR>pID3DDevice-&gt;SetVertexShader(D3DFVF_XYZRHW 
            | D3DFVF_DIFFUSE); 
            <P>pID3DDevice-&gt;SetStreamSource(0, pStreamData, 
            sizeof(MYVERTEX));<BR>SetVertexShader告诉Direct3D使用与CreateVertexBuffer同样的格式。<BR>SetStreamSource告诉Direct3D使用pStreamData作为当前顶点阵列,并取得所有元素的大小。<BR>你现在可以加入画三角形的代码了。在DrawScene()的BeginScene和EndScene之间加入如下代码:<BR>int 
            num_elems = sizeof(vertices) / 
            sizeof(vertices[0]);<BR>pID3DDevice-&gt;DrawPrimitive(D3DPT_TRIANGLELIST,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            num_elems / 
            3);<BR>D3DPT_TRIANGLELIST标记将命令Direct3D画不连续的三角形。你指定从索引的第0个顶点开始,指定所要画的三角形数目。<BR>如果正确的话,你会看到一个三角形画在先前的绿色背景窗口上。 

            <P>第四章 
            画索引三角形<BR>(DX8MFC3)<BR>上一章的画三角形方式运行效率是较低的,而实际上我们都会使用DrawIndexedPrimitive()而不是DrawPrimitive()。想一想,如果要画两个相连的三角形,共有四个顶点。用DrawIndexedPrimitive()画要画四个顶点,而用DrawPrimitive()画则要画六个顶点。<BR>如果你可以顶点建立索引,你就可以用DrawIndexedPrimitive()画三角形了。我们可以为一个三角形建立这样的索引:<BR>WORD 
            indices[] = { 0, 1, 2 
            };<BR>它表示三角形中,第一个顶点对应于顶点阵列的第0个顶点;三角形中,第二个顶点对应于顶点阵列的第1个顶点;三角形中,第三个顶点对应于顶点阵列的第2个顶点;<BR>要画索引三角形,首先要建立索引缓冲:<BR>num_elems 
            = sizeof(indices) / 
            sizeof(indices[0]);<BR>pID3DDevice-&gt;CreateIndexBuffer(sizeof(WORD) 
            * 
            num_elems,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DUSAGE_WRITEONLY,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DFMT_INDEX16,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DPOOL_DEFAULT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &amp;pIndexBuffer);<BR>第二步是用顶点填充这个索引缓冲:<BR>WORD 
            *pIndex;<BR>pIndexBuffer-&gt;Lock(0, 0, (BYTE **)&amp;pIndex, 
            0);<BR>for(ii = 0; ii &lt; num_elems; ii++)<BR>{<BR>&nbsp; 
            pIndex[ii] = 
            indices[ii];<BR>}<BR>pIndexBuffer-&gt;Unlock();<BR>设定索引缓冲:<BR>pID3DDevice-&gt;SetIndices(pIndexBuffer, 
            0);<BR>把DrawScene()的相应的pID3DDevice-&gt;DrawPrimitive(...)换成:<BR>pID3DDevice-&gt;DrawIndexedPrimitive(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DPT_TRIANGLELIST,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            sizeof(indices) / 
            sizeof(indices[0]),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            sizeof(indices) / sizeof(indices[0]) / 3);<BR>运行程序的到的还是一个三角形。 
            <P>第五章 
            加入帖图<BR>(DX8MFC4)<BR>首先,在MYVERTEX结构中加入帖图坐标系tu和tv,并给顶点阵列赋以适当的值。<BR>下一步,设置你的帖图:<BR>D3DXCreateTextureFromFile(pID3DDevice,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            "dx5_logo.bmp",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &amp;pTexture);<BR>pID3DDevice-&gt;SetTexture(0, 
            pTexture);<BR>其中的"dx5_logo.bmp"指的是帖图文件,你可以用其他的文件代替它,运行程序你会看到一个带帖图的三角形。 

            <P>第六章 
            帖图立方体<BR>(DX8MFC5)<BR>现在样我们来进入三维的世界吧!这里你要启用Z缓冲(z-buffer),设置立方体的材质,世界坐标系和投影坐标系。<BR>启用Z缓冲(z-buffer),你要在D3DPRESENT_PARAMETERS结构中加入:<BR>present.EnableAutoDepthStencil&nbsp; 
            = TRUE;<BR>present.AutoDepthStencilFormat&nbsp; = 
            D3DFMT_D16;<BR>这里告诉DirectX8使用16位的Z缓冲,下一步:<BR>pID3DDevice-&gt;SetRenderState(D3DRS_ZENABLE, 
            TRUE);<BR>到这里Z缓冲已经设置完成。最后你还要在DrawScene()中调用清除Z缓冲内容的代码:<BR>pID3DDevice-&gt;Clear(0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DCLEAR_TARGET | 
            D3DCLEAR_ZBUFFER,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            D3DCOLOR_RGBA(0,63,0,0),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            1.0,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            0);<BR>MYVERTEX结构改成:<BR>struct MYVERTEX<BR>{<BR>&nbsp;&nbsp;&nbsp; 
            FLOAT x, y, z; // The transformed position<BR>&nbsp;&nbsp;&nbsp; 
            DWORD color;&nbsp;&nbsp; // The vertex color<BR>&nbsp;&nbsp;&nbsp; 
            FLOAT tu, tv;&nbsp; // Texture 
            coordinates<BR>};<BR>在InitDirect3D()也作了相应改动,具体可见源代码。<BR>Direct3D中有多种矩阵,在这里只使用其中的三个:世界、视图和投影矩阵。世界矩阵变换会把正方体放在世界坐标系中,视图矩阵变换把正方体放在可视空间内,投影矩阵使正方体看起来有深度感。<BR>BuildMatrices()函数将建立这三个矩阵:<BR>void 
            CFrameWin::BuildMatrices()<BR>{<BR>&nbsp;&nbsp;&nbsp; D3DXMATRIX 
            matrix;<BR>&nbsp;&nbsp;&nbsp; D3DXMatrixRotationY(&amp;matrix, 
            timeGetTime() / 1000.0f);<BR>&nbsp;&nbsp;&nbsp; 
            pID3DDevice-&gt;SetTransform(D3DTS_WORLD, &amp;matrix); 
            <P>&nbsp;&nbsp;&nbsp; D3DXMatrixLookAtLH(&amp;matrix, 
            &amp;D3DXVECTOR3(0.0f, 3.0f, -5.0f), // 
            摄像机的空间位置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &amp;D3DXVECTOR3(0.0f, 0.0f, 0.0f),&nbsp; // 
            摄象机观察点<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &amp;D3DXVECTOR3(0.0f, 1.0f, 0.0f)); // 
            摄象机向上方向矢量<BR>&nbsp;&nbsp;&nbsp; 
            pID3DDevice-&gt;SetTransform(D3DTS_VIEW, &amp;matrix); 
            <P>&nbsp;&nbsp;&nbsp; // 设置我们的平截面为45度角<BR>&nbsp;&nbsp;&nbsp; 
            D3DXMatrixPerspectiveFovLH(&amp;matrix, D3DX_PI / 4, 4.0f / 3.0f, 
            1.0f, 100.0f);<BR>&nbsp;&nbsp;&nbsp; 
            pID3DDevice-&gt;SetTransform(D3DTS_PROJECTION, 
            &amp;matrix);<BR>}<BR>运行本章的例子你将看到一个旋转的正方体。 
            <P>声明:<BR>本文的SourceCode可以从http://gamedev.363.net得到<BR>欢迎您光临我的主页:http://gamedev.363.net<BR>作者:陈伟凡<BR>E-mail: 
            laical@21cn.com<BR>2001/1/12<BR></P><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文档中心_MFC架构下的DirectX8.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_MFC架构下的DirectX8.files/ico_pencil.gif" width=16> 
      </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; gjq2000 <I>(2001-1-18 10:55:51)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>好书! <BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_MFC架构下的DirectX8.files/ico_pencil.gif" width=16> 
      </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; ghj1976 <I>(2001-1-15 16:34:34)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>源码在 
      http://gamedev.363.net/program/directx8/dx8mfc-src.rar 
<BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=3426">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 src="CSDN_文档中心_MFC架构下的DirectX8.files/biaoshi.gif" 
      width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -