当前位置:文档之家› OpenGL 第13课

OpenGL 第13课

OpenGL   第13课
OpenGL   第13课

第13课

图像字体:

这一课我们将创建一些基于2D图像的字体,它们可以缩放,但不能旋转,并且总是面向前方,但作为基本的显示来说,我想已经够了。

欢迎来到另一课教程,这次我将教你如何使用位图字体,也许你会对自己说:“在屏幕上显示文字有什么难的?”。但是你真正尝试过就会知道,它确实没那么容易。

当然,你可以载入一段美术程序,把文字写在一个图片上,再把这幅图片载入你的OpenGL 程序中,打开混合选项,从而在屏幕上显示出文字。但是这种做法非常耗时。而且根据你选择的滤波类型,最终结果常常会显得很模糊,或者有很多马赛克。另外,除非你的图像包含一个Alpha通道,否则一旦绘制在屏幕上,那些文字就会不透明(与屏幕中的其它物体混合)。

如果你使用过记事本、微软的Word或者其它文字处理软件,你会注意到所有不同的字体都是可用的。这课就会教你如何在自己的OpenGL程序中使用和原样相同的字体。事实上,任何安装在你的计算机中的字体都可以使用在演示中(中文不行)。

使用位图字体比起使用图形字体(贴图)看起来不止强100倍。你可以随时改变显示在屏幕上的文字,而且用不着为它们逐个制作贴图。只需要将文字定位,再使用我最新的gl命令就可以在屏幕上显示文字了。

我尽可能试着将命令做的简单。你只需要敲入glPrint("Hello") 。它是那么简单。不管怎样,从这段长长的介绍就可以看出,我对这课教程是多么的满意。写这段代码大概花了我一个半小时,为什么这么长的时间呢?那是因为在使用位图字体方面完全没有可用的资料,除非你愿意使用MFC中的代码。为了使代码简单,我想,如果我把它全部重写为容易理解的C语言代码,那一定会好些:)

一个小注释,这段代码是专门针对Windows写的,它使用了Windows的wgl函数来创建字体,显然,Apple机系统有agl,X系统有glx来支持做同样事情的,不幸的是,我不能保证这些代码也是容易使用的。如果那位有能在屏幕上显示文字且独立于平台的代码,请告诉我,我将重写一个有关字体的教程。

我们从第一课的典型代码开始,添加上stdio.h头文件以便进行标准输入/输出操作,另外,stdarg.h头文件用来解析文字以及把变量转换为文字。最后加上math.h头文件,这样我们就可以使用SIN和COS函数在屏幕中移动文字了。

#include // 用来定义可变参数的头文件

另外,我们还要添加3个变量。base将保存我们创建的第一个显示列表的编号。每个字符都

需要有自己的显示列表。例如,字符‘A’在显示列表中是65,‘B’是66,‘C’是67,等等。所以,字符‘A’应保存在显示列表中的base + 65这个位置。

然后添加两个计数器(cnt1 和cnt2),它们采用不用的累加速度,通过SIN和COS函数来改变文字在屏幕上的位置。在屏幕上创造出一种看起来像是半随机的移动方式。同时,我们用这两个计数器来改变文字的颜色(后面会进一步解释)。

GLuint base; // 绘制字体的显示列表的开始位置

GLfloat cnt1; // 字体移动计数器1

GLfloat cnt2; // 字体移动计数器2

下面这段代码用来构建真实的字体,这也是最难写的一部分代码。‘HFONT font’告诉Windows我们将要使用一个Windows字体。Oldfont用来存放字体。

接下来我们在定义base的同时使用glGenLists(96)创建了一组共96个显示列表。

GLvoid BuildFont(GLvoid) // 创建位图字体

{

HFONT font; // 字体句柄

HFONT oldfont; // 旧的字体句柄

base = glGenLists(96); // 创建96个显示列表

下面该有趣的部分了,我们将创建属于自己的字体。我们从指定字体的大小开始,你会注意到它是一个负数,我们通过加上一个负号来告诉Windows寻找一个基于CHARACTER高度的字体。如果我们使用一个正数,就是寻找一个与基于CELL的高度相匹配的字体。

font = CreateFont( -24, // 字体高度

然后我们指定每个单元的宽度,你会注意到我把它定义为0,这样,Windows就会使用默认值。如果你愿意的话,可以改变它的值,比如更宽一点,等等。

0, // 字体宽度

Angle Of Escapement会将字体旋转,它不是一个常用的属性,除了0,90,180,270四个角度以外,由于字体本身要适应其看不见的方形边框,常常会显的裁切不正。MSDN帮助中解释Orientation Angle用于指定每个字的底边和显示设备的X轴之间的角度,每个单位是十分之一个角度,不幸的是我对这个没有概念。

0, // 字体的旋转角度Angle Of Escapement

0, // 字体底线的旋转角度Orientation Angle

字体重量是一个很重要的参数,你可以设置一个0–1000之间的值或使用一个已定义的值。FW_DONTCARE是0, FW_NORMAL是400, FW_BOLD是700 and FW_BLACK是900。还有许多预先定义的值,但是这四个的效果比较好。值越大,字体就越粗。

FW_BOLD, // 字体的重量

Italic(斜体),Underline(下划线)和Strikeout(删除线)可以是TRUE或FALSE。如果将Underline 设置为TRUE,那么字体就会带有下划线,否则就没有,非常简单。

FALSE, // 是否使用斜体

FALSE, // 是否使用下划线

FALSE, // 是否使用删除线

Character Set Identifier(字符集标识符)用来描述你要使用的字符集(内码)类型。有太多需要说明的类型了。CHINESEBIG5_CHARSET,GREEK_CHARSET,RUSSIAN_CHARSET,DEFAULT_CHARSET ,等等。我使用的是ANSI,尽管DEFAULT也是很好用的。

如果你有兴趣使用Webdings或Wingdings等字体,你必须使用SYMBOL_CHARSET而不是ANSI_CHARSET。

ANSI_CHARSET, // 设置字符集

Output Precision(输出精度)非常重要。它告诉Windows在有多种字符集的情况下使用哪类字符集。OUT_TT_PRECIS告诉Windows如果一个名字对应多种不同的选择字体,那么选择字体的TRUETYPE类型。Truetype字体通常看起来要好些,尤其是你把它们放大的时候。

你也可以使用OUT_TT_ONLY_PRECIS,它将会一直尝试使用一种TRUETYPE类型的字体

OUT_TT_PRECIS, // 输出精度

裁剪精度是一种当字体落在裁剪范围之外时使用的剪辑类型,不用多说,只要把它设置为DEFAULT就可以了。

CLIP_DEFAULT_PRECIS, // 裁剪精度

输出质量非常重要。你可以使用PROOF,DRAFT,NONANTIALIASED,DEFAULT或ANTIALISED。

我们都知道,ANTIALIASED字体看起来很好,将一种字体Antialiasing(反锯齿)可以实现在Windows下打开字体平滑时同样的效果,它使任何东西看起来都要少些锯齿,也就是更平滑。

ANTIALIASED_QUALITY, // 输出质量

下面是Family和Pitch设置。Pitch属性有DEFAULT_PITCH,FIXED_PITCH和V ARIABLE_PITCH,Family有FF_DECORA TIVE,FF_MODERN,FF_ROMAN,FF_SCRIPT,FF_SWISS,FF_DONTCARE.尝试一下这些值,你就会知道它们到底有什么功能。我把它们都设置为默认值。

FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch

最后,是我们需要的字体的确切的名字。打开Microsoft Word或其它什么文字处理软件,点击字体下拉菜单,找一个你喜欢的字体。将‘Courier New’替换为你想用的字体的名字,你就可以使用它了。(中文还不行,需要别的方法)

"Courier New"); // 字体名称

现在,选择我们刚才创建的字体。Oldfont将指向被选择的对象。然后我们从第32个字符(空

格)开始建立96个显示列表。如果你愿意,也可以建立所有256个字符,只要确保使用glGenLists建立256个显示列表就可以了。然后我们将oldfont对象指针选入hDC并且删除font对象。

oldfont = (HFONT)SelectObject(hDC, font); // 选择我们需要的字体wglUseFontBitmaps(hDC, 32, 96, base); // 创建96个显示列表,绘制从ASCII码为32-128的字符

SelectObject(hDC, oldfont); // 选择原来的字体

DeleteObject(font); // 删除字体

}

接下来的代码很简单。它在内存中从base开始删除96个显示列表。我不知道Windows是否会做这些工作,但还是保险为好。

GLvoid KillFont(GLvoid) // 删除显示列表

{

glDeleteLists(base, 96); //删除96个显示列表

}

下面就是我优异的GL文字程序了。你可以通过调用glPrint(“需要写的文字”)来调用这段代码。文字被存储在字符串* fmt中。

GLvoid glPrint(const char *fmt, ...) // 自定义GL输出字体函数

{

下面的第一行创建了一个大小为256个字符的字符数组,里面保存我们想要的文字串。第二行创建了一个指向一个变量列表的指针。我们在传递字符串的同时也传递了这个变量列表。如果我们传递文本时也传递了变量,这个指针将指向它们。

char text[256]; // 保存文字串

va_list ap; // 指向一个变量列表的指针

下面两行代码检查是否有需要显示的内容,如果什么也没有,fmt就等于空(NULL),屏幕上也就什么都没有。

if (fmt == NULL) // 如果无输入则返回

return;

接下来三行代码将文字中的所有符号转换为它们的字符编号。最后,文字和转换的符号被存储在一个叫做text的字符串中。以后我会多解释一些有关字符的细节。

va_start(ap, fmt); // 分析可变参数

vsprintf(text, fmt, ap); // 把参数值写入字符串

va_end(ap); // 结束分析

然后我们将GL_LIST_BIT压入属性堆栈,它会防止glListBase影响到我们的程序中的其它显示列表。

GlListBase(base-32)是一条有些难解释的命令。比如说要写字母‘A’,它的相应编号为65。如果没有glListBase(base-32)命令,OpenGL就不知道到哪去找这个字母。它会在显示列表中的第65个位置找它,但是,假如base的值等于1000,那么‘A’的实际存放位置就是1065了。所以通过base设置一个起点,OpenGL就知道到哪去找到正确的显示列表了。减去32是因为我们没有构造过前32个显示列表,那么就跳过它们好了。于是,我们不得不通过从base的值减去32来让OpenGL知道这一点。我希望这些有意义。

glPushAttrib(GL_LIST_BIT); // 把显示列表属性压入属性堆栈

glListBase(base - 32); // 设置显示列表的基础值

现在OpenGL知道字母的存放位置了,我们就可以让它在屏幕上显示文字了。GlCallLists是一个很有趣的命令。它可以同时将多个显示列表的内容显示在屏幕上。

下面的代码做后续工作。首先,它告诉OpenGL我们将要在屏幕上显示出显示列表中的内容。Strlen(text)函数用来计算我们将要显示在屏幕上的文字的长度。然后,OpenGL需要知道我们允许发送给它的列表的最大值。我们不能发送长度大于255的字符串。这个字符列表的参数被当作一个无符号字符数组处理,它们的值都介于0到255之间。最后,我们通过传递text(它指向我们的字符串)来告诉OpenGL显示的内容。

也许你想知道为什么字符不会彼此重叠堆积在一起。那时因为每个字符的显示列表都知道字符的右边缘在那里,在写完一个字符后,OpenGL自动移动到刚写过的字符的右边,在写下一个字或画下一个物体时就会从GL移动到的最后的位置开始,也就是最后一个字符的右边。

最后,我们将GL_LIST_BIT属性弹出堆栈,将GL恢复到我们使用glListBase(base-32)设置base那时的状态。

glCallLists(strlen(text), GL_UNSIGNED_BYTE, text); // 调用显示列表绘制字符串glPopAttrib(); // 弹出属性堆栈

}

在初始化代码中唯一的变化就是BuildFont()。它调用前面的代码来创建字体,然后OpenGL 就可以使用这个字体了。

BuildFont(); // 创建字体

下面就是画图的代码了。我们从清除屏幕和深度缓存开始。我们调用glLoadIdentity()来重置所有东西。然后我们将坐标系向屏幕里移动一个单位。如果不移动的话无法显示出文字。当你使用透视投影而不是ortho投影的时候位图字体表现的更好。由于ortho看起来不好,所以我用透视投影,并移动坐标系。。

你会注意到如果把坐标系在屏幕里放的更深远,字体并不会想你想象的那样缩小,只是你可以在控制文字位置时有更多的选择。如果你将坐标系移入屏幕一个单位,你就可以字X轴上-0.5到+0.5的范围内调整文字的位置。如果深入10个单位的话,移动范围就从-5到+5。它给了你更多的选择来替代使用小数指定文字的精确位置。什么都不能改变文字的大小,即使是调用glScale(x,y,z)函数.如果你想改变字体的大小,只能在创建它的时候改变它。

int DrawGLScene(GLvoid) // 此过程中包括所有的绘制代码

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕及深度缓存glLoadIdentity(); // 重置当前的模型观察矩阵

glTranslatef(0.0f,0.0f,-1.0f); // 移入屏幕一个单位

下面我们使用一些奇妙的数学方法来产生颜色变化脉冲。如果你不懂我在做什么你也不必担心。我喜欢利用教多的变量和教简单的方法来达到我的目的。

这样,我使用那两个用来改变文字在屏幕上位置的计数器来改变红、绿、蓝这些颜色。红色值使用COS和计数器1在-1.0到1.0之间变化。绿色值使用SIN和计数器2也在-1.0到1.0之间变化。蓝色值使用COS和计数器1和2在0.5到1.5之间变化。于是,蓝色值就永远不会等于0,文字的颜色也永远不会消失。笨办法,但很管用。

// 根据字体位置设置颜色

glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)));

下面是一个新命令。GlRasterPos2f(x,y)用于在屏幕上定位位图字体。屏幕的中心依然是(0,0),注意,这里没有Z轴位置。位图字体只使用X轴(左/右)和Y轴(上/下)。因为我们将坐标系移入屏幕一个单位,往左最大值为-0.5,往右最大值为+0.5。你会注意到我在X轴上向左移动了0.45个像素。它将文字移到屏幕的中心位置。否则,因为文字的起点就是屏幕的中心,会造成文字整体偏右。

计算文字位置的算法与设置文字颜色的算法差不多。它将文字在X轴的-0.50到-0.40的范围内移动(记住,我们从起点就减了0.45),这就保证文字始终能显示在屏幕内。由于使用COS 和计数器1,所以文字左右摆动,使用SIN和计数器2在Y轴的-0.35到0.35范围内移动。

// 设置光栅化位置,即字体的位置

glRasterPos2f(-0.45f+0.05f*float(cos(cnt1)), 0.35f*float(sin(cnt2)));

现在轮到我最满意的部分了。将真正的文字写到屏幕上。我试着把它做的非常简单,而且非常友好,便于使用。你会注意到它看起来像调用一个OpenGL的函数,有点类似C语言中的输出语句的风格。在屏幕上输出文字只需要调用glPrint(“你想写的文字”).它很容易。文字将精确的显示在屏幕上你指定的位置。

Shawn T.发给我修改过的代码允许glPrint传递变量到屏幕。这意味着你可以增加一个计数器,并且在屏幕上显示出这个计数器的值,它是这样工作的。。。在下一行你看到:要显示的普通文字,然后有一个空格,一个破折号,一个空格,然后是一个“符号”(%7.2f)(C语言中的输出格式控制字).现在你会看着%7.2说这是什么意思。它其实很简单,%是一个记号,表示不要把7.2f本身显示在屏幕上,因为它代表一个变量。7表示小数点左边最多有7位数字。然后是小数部分,小数点右边的2表示小数点右边最多保留两位小数。最后,f表示我们想要显示的数字类型为浮点型。我们想在屏幕上显示计数器1的值。比如,计数器1的值为300.12345f,那么在屏幕上显示的数字就是300.12,小数部分的3,4,5会舍去。因为我们只需要显示小数点后面两位数字。

我知道如果你是一个有经验的C程序员,这是个很基础的问题。不过也许也有人没有用过pringf函数。如果你想了解更多的字符,那就买本书或者查阅MSDN。

glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1); // 输出文字到屏幕

最后一件事就是以不同的速率增加计数器的值来产生颜色脉冲并且移动文字。

cnt1+=0.051f; // 增加计数器值

cnt2+=0.005f; // 增加计数器值

return TRUE; // 继续运行

}

最后,如下所示,就是增加在KillGLWindow()函数中增加KillFont()函数,这很重要,它在我们退出程序之前做清理工作。

KillFont(); // 删除字体

好了,用于使用位图字体的所有一切都在你的OpenGL程序中了。我在网上寻找过与这篇教程相似的文章,但没有找到。或许我的网站是第一个涉及这个主题的C代码的网站吧。不管怎样,享用这篇教程,快乐编码!

Lesson 13

Welcome to yet another Tutorial. This time on I'll be teaching you how to use Bitmap Fonts. Y ou may be saying to yourself "what's so hard about putting text onto the screen". If you've ever tried it, it's not that easy!

Sure you can load up an art program, write text onto an image, load the image into your OpenGL program, turn on blending then map the text onto the screen. But this is time consuming, the final result usually looks blurry or blocky depending on the type of filtering you use, and unless your image has an alpha channel your text will end up transparent (blended with the objects on the screen) once it's mapped to the screen.

If you've ever used Wordpad, Microsoft Word or some other Word Processor, you may have noticed all the different types of Font's avaialable. This tutorial will teach you how to use the exact same fonts in your own OpenGL programs. As a matter of fact... Any font you install on your computer can be used in your demos.

Not only do Bitmap Fonts looks 100 times better than graphical fonts (textures). Y ou can change the text on the fly. No need to make textures for each word or letter you want to write to the screen. Just position the text, and use my handy new gl command to display the text on the screen.

I tried to make the command as simple as possible. All you do is type glPrint("Hello"). It's that easy. Anyways. Y ou can tell by the long intro that I'm pretty happy with this tutorial. It took me roughly 1 1/2 hours to create the program. Why so long? Because there is literally no information available on using Bitmap Fonts, unless of course you enjoy MFC code. In order to keep the code simple I decided it would be nice if I wrote it all in simple to understand C code :)

A small note, this code is Windows specific. It uses the wgl functions of Windows to build the font. Apparently Apple has agl support that should do the same thing, and X has glx. Unfortunately I can't guarantee this code is portable. If anyone has platform independant code to draw fonts to the screen, send it my way and I'll write another font tutorial.

We start off with the typical code from lesson 1. We'll be adding the stdio.h header file for standard input/output operations; the stdarg.h header file to parse the text and convert variables to text, and finally the math.h header file so we can move the text around the screen using SIN and COS.

#include // Header File For Windows

#include // Header File For Windows Math Library ( ADD )

#include // Header File For Standard Input/Output ( ADD )

#include // Header File For V ariable Argument Routines ( ADD )

#include // Header File For The OpenGL32 Library

#include // Header File For The GLu32 Library

#include // Header File For The GLaux Library

HDC hDC=NULL; // Private GDI Device Context

HGLRC hRC=NULL; // Permanent Rendering Context

HWND hWnd=NULL; // Holds Our Window Handle

HINSTANCE hInstance; // Holds The Instance Of The Application

We're going to add 3 new variables as well. base will hold the number of the first display list we create. Each character requires it's own display list. The character 'A' is 65 in the display list, 'B' is 66, 'C' is 67, etc. So 'A' would be stored in display list base+65.

Next we add two counters (cnt1 & cnt2). These counters will count up at different rates, and are used to move the text around the screen using SIN and COS. This creates a semi-random looking movement on the screen. We'll also use the counters to control the color of the letters (more on this later).

GLuint base; // Base Display List For The Font Set

GLfloat cnt1; // 1st Counter Used To Move Text & For Coloring

GLfloat cnt2; // 2nd Counter Used To Move Text & For Coloring

bool keys[256]; // Array Used For The Keyboard Routine

bool active=TRUE; // Window Active Flag Set To TRUE By Default

bool fullscreen=TRUE; // Fullscreen Flag Set To Fullscreen Mode By Default

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Declaration For WndProc

The following section of code builds the actual font. This was the most difficult part of the code to write. 'HFONT font' in simple english tells Windows we are going to be manipulating a Windows font. oldfont is used for good house keeping.

Next we define base. We do this by creating a group of 96 display lists using glGenLists(96). After the display lists are created, the variable base will hold the number of the first list.

GLvoid BuildFont(GLvoid) // Build Our Bitmap Font

{

HFONT font; // Windows Font ID

HFONT oldfont; // Used For Good House Keeping

base = glGenLists(96); // Storage For 96 Characters ( NEW )

Now for the fun stuff. We're going to create our font. We start off by specifying the size of the font. Y ou'll notice it's a negative number. By putting a minus, we're telling windows to find us a font based on the CHARACTER height. If we use a positive number we match the font based on the CELL height.

font = CreateFont( -24, // Height Of Font ( NEW )

Then we specify the cell width. Y ou'll notice I have it set to 0. By setting values to 0, windows will use the default value. Y ou can play around with this value if you want. Make the font wide, etc.

0, // Width Of Font

Angle of Escapement will rotate the font. Unfortunately this isn't a very useful feature. Unless

your at 0, 90, 180, and 270 degrees, the font usually gets cropped to fit inside it's invisible square border. Orientation Angle quoted from MSDN help Specifies the angle, in tenths of degrees, between each character's base line and the x-axis of the device. Unfortunately I have no idea what that means :(

0, // Angle Of Escapement

0, // Orientation Angle

Font weight is a great parameter. Y ou can put a number from 0 - 1000 or you can use one of the predefined values. FW_DONTCARE is 0, FW_NORMAL is 400, FW_BOLD is 700 and FW_BLACK is 900. There are alot more predefined values, but those 4 give some good variety. The higher the value, the thicker the font (more bold).

FW_BOLD, // Font Weight

Italic, Underline and Strikeout can be either TRUE or FALSE. Basically if underline is TRUE, the font will be underlined. If it's FALSE it wont be. Pretty simple :)

FALSE, // Italic

FALSE, // Underline

FALSE, // Strikeout

Character set Identifier describes the type of Character set you wish to use. There are too many types to explain. CHINESEBIG5_CHARSET, GREEK_CHARSET, RUSSIAN_CHARSET, DEFAULT_CHARSET, etc. ANSI is the one I use, although DEFAULT would probably work just as well.

If you're interested in using a font such as Webdings or Wingdings, you need to use SYMBOL_CHARSET instead of ANSI_CHARSET.

ANSI_CHARSET, // Character Set Identifier

Output Precision is very important. It tells Windows what type of character set to use if there is more than one type available. OUT_TT_PRECIS tells Windows that if there is more than one type of font to choose from with the same name, select the TRUETYPE version of the font. Truetype fonts always look better, especially when you make them large. Y ou can also use

OUT_TT_ONLY_PRECIS, which ALWAYS trys to use a TRUETYPE Font.

OUT_TT_PRECIS, // Output Precision

Clipping Precision is the type of clipping to do on the font if it goes outside the clipping region. Not much to say about this, just leave it set to default.

CLIP_DEFAULT_PRECIS, // Clipping Precision

Output Quality is very important.you can have PROOF, DRAFT, NONANTIALIASED, DEFAULT or ANTIALIASED. We all know that ANTIALIASED fonts look good :) Antialiasing a font is the same effect you get when you turn on font smoothing in Windows. It makes everything look less jagged.

ANTIALIASED_QUALITY, // Output Quality

Next we have the Family and Pitch settings. For pitch you can have DEFAULT_PITCH, FIXED_PITCH and V ARIABLE_PITCH, and for family you can have FF_DECORA TIVE, FF_MODERN, FF_ROMAN, FF_SCRIPT, FF_SWISS, FF_DONTCARE. Play around with them to find out what they do. I just set them both to default.

FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch

Finally... We have the actual name of the font. Boot up Microsoft Word or some other text editor. Click on the font drop down menu, and find a font you like. To use the font, replace 'Courier New' with the name of the font you'd rather use.

"Courier New"); // Font Name

Now we select the font we just created. oldfont will point to the selected object. We then build the 96 display lists starting at character 32 (which is a blank space). Y ou can build all 256 if you'd like, just make sure you build 256 display lists using glGenLists. After that we select the object oldfont points to and then we delete the font object.

oldfont = (HFONT)SelectObject(hDC, font); // Selects The Font We Want wglUseFontBitmaps(hDC, 32, 96, base); // Builds 96 Characters Starting At Character 32 SelectObject(hDC, oldfont); // Selects The Font We Want

DeleteObject(font); // Delete The Font

}

The following code is pretty simple. It deletes the 96 display lists from memory starting at the first list specified by 'base'. I'm not sure if windows would do this for you, but it's better to be safe than sorry :)

GLvoid KillFont(GLvoid) // Delete The Font List

{

glDeleteLists(base, 96); // Delete All 96 Characters ( NEW )

}

Now for my handy dandy GL text routine. Y ou call this section of code with the command glPrint("message goes here"). The text is stored in the char string *fmt.

GLvoid glPrint(const char *fmt, ...) // Custom GL "Print" Routine

{

The first line below creates storage space for a 256 character string. text is the string we will end up printing to the screen. The second line below creates a pointer that points to the list of arguments we pass along with the string. If we send any variables along with the text, this will point to them.

char text[256]; // Holds Our String

va_list ap; // Pointer To List Of Arguments

The next two lines of code check to see if there's anything to display? If there's no text, fmt will equal nothing (NULL), and nothing will be drawn to the screen.

if (fmt == NULL) // If There's No Text

return; // Do Nothing

The following three lines of code convert any symbols in the text to the actual numbers the symbols represent. The final text and any converted symbols are then stored in the character string called "text". I'll explain symbols in more detail down below.

va_start(ap, fmt); // Parses The String For V ariables

vsprintf(text, fmt, ap); // And Converts Symbols To Actual Numbers

va_end(ap); // Results Are Stored In Text

We then push the GL_LIST_BIT, this prevents glListBase from affecting any other display lists we may be using in our program.

The command glListBase(base-32) is a little hard to explain. Say we draw the letter 'A', it's represented by the number 65. Without glListBase(base-32) OpenGL wouldn't know where to find this letter. It would look for it at display list 65, but if base was equal to 1000, 'A' would actually be stored at display list 1065. So by setting a base starting point, OpenGL knows where to get the proper display list from. The reason we subtract 32 is because we never made the first 32 display lists. We skipped them. So we have to let OpenGL know this by subtracting 32 from the base value. I hope that makes sense.

glPushAttrib(GL_LIST_BIT); // Pushes The Display List Bits ( NEW )

glListBase(base - 32); // Sets The Base Character to 32 ( NEW )

Now that OpenGL knows where the Letters are located, we can tell it to write the text to the screen. glCallLists is a very interesting command. It's capable of putting more than one display list on the screen at a time.

The line below does the following. First it tells OpenGL we're going to be displaying lists to the screen. strlen(text) finds out how many letters we're going to send to the screen. Next it needs to know what the largest list number were sending to it is going to be. We're not sending any more than 255 characters. The lists parameter is treated as an array of unsigned bytes, each in the range 0 through 255. Finally we tell it what to display by passing text (pointer to our string).

In case you're wondering why the letters don't pile on top of eachother. Each display list for each character knows where the right side of the letter is. After the letter is drawn, OpenGL translates to the right side of the drawn letter. The next letter or object drawn will be drawn starting at the last location GL translated to, which is to the right of the last letter.

Finally we pop the GL_LIST_BIT setting GL back to how it was before we set our base setting using glListBase(base-32).

glCallLists(strlen(text), GL_UNSIGNED_BYTE, text); // Draws The Display List Text ( NEW ) glPopAttrib(); // Pops The Display List Bits ( NEW )

}

The only thing different in the Init code is the line BuildFont(). This jumps to the code above that builds the font so OpenGL can use it later on.

int InitGL(GLvoid) // All Setup For OpenGL Goes Here

{

glShadeModel(GL_SMOOTH); // Enable Smooth Shading

glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background

glClearDepth(1.0f); // Depth Buffer Setup

glEnable(GL_DEPTH_TEST); // Enables Depth Testing

glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations

BuildFont(); // Build The Font

return TRUE; // Initialization Went OK

}

Now for the drawing code. We start off by clearing the screen and the depth buffer. We call glLoadIdentity() to reset everything. Then we translate one unit into the screen. If we don't translate, the text wont show up. Bitmap fonts work better when you use an ortho projection rather than a perspective projection, but ortho looks bad, so to make it work in projection, translate.

Y ou'll notice that if you translate even deeper into the screen the size of the font does not shrink like you'd expect it to. What actually happens when you translate deeper is that you have more control over where the text is on the screen. If you tranlate 1 unit into the screen, you can place the text anywhere from -0.5 to +0.5 on the X axis. If you tranlate 10 units into the screen, you place the text from -5 to +5. It just gives you more control instead of using decimal places to position the text at exact locations. Nothing will change the size of the text. Not even glScalef(x,y,z). If you want the font bigger or smaller, make it bigger or smaller when you create it!

int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The

Depth Buffer

glLoadIdentity(); // Reset The V iew

glTranslatef(0.0f,0.0f,-1.0f); // Move One Unit Into The Screen

Now we use some fancy math to make the colors pulse. Don't worry if you don't understand what I'm doing. I like to take advantage of as many variables and stupid tricks as I can to achieve results :)

In this case I'm using the two counters we made to move the text around the screen to change the red, green and blue colors. Red will go from -1.0 to 1.0 using COS and counter 1. Green will also go from -1.0 to 1.0 using SIN and counter 2. Blue will go from 0.5 to 1.5 using COS and counter 1 and 2. That way blue will never be 0, and the text should never completely fade out. Stupid, but it works :)

// Pulsing Colors Based On Text Position

glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)));

Now for a new command. glRasterPos2f(x,y) will position the Bitmapped Font on the screen. The center of the screen is still 0,0. Notice there's no Z position. Bitmap Fonts only use the X axis (left/right) and Y axis (up/down). Because we translate one unit into the screen, the far left is -0.5, and the far right is +0.5. Y ou'll notice that I move 0.45 pixels to the left on the X axis. This moves the text into the center of the screen. Otherwise it would be more to the right of the screen because it would be drawn from the center to the right.

The fancy(?) math does pretty much the same thing as the color setting math does. It moves the text on the x axis from -0.50 to -0.40 (remember, we subtract 0.45 right off the start). This keeps the text on the screen at all times. It swings left and right using COS and counter 1. It moves from -0.35 to +0.35 on the Y axis using SIN and counter 2.

// Position The Text On The Screen

glRasterPos2f(-0.45f+0.05f*float(cos(cnt1)), 0.35f*float(sin(cnt2)));

Now for my favorite part... Writing the actual text to the screen. I tried to make it super easy, and very user friendly. Y ou'll notice it looks alot like an OpenGL call, combined with the good old fashioned Print statement :) All you do to write the text to the screen is glPrint("{any text you want}"). It's that easy. The text will be drawn onto the screen at the exact spot you positioned it.

Shawn T. sent me modified code that allows glPrint to pass variables to the screen. This means that you can increase a counter and display the results on the screen! It works like this... In the line

below you see our normal text. Then there's a space, a dash, a space, then a "symbol" (%7.2f). Now you may look at %7.2f and say what the heck does that mean. It's very simple. % is like a marker saying don't print 7.2f to the screen, because it represents a variable. The 7 means a maximum of 7 digits will be displayed to the left of the decimal place. Then the decimal place, and right after the decimal place is a 2. The 2 means that only two digits will be displayed to the right of the decimal place. Finally, the f. The f means that the number we want to display is a floating point number. We want to display the value of cnt1 on the screen. As an example, if cnt1 was equal to 300.12345f the number we would end up seeing on the screen would be 300.12. The 3, 4, and 5 after the decimal place would be cut off because we only want 2 digits to appear after the decimal place.

I know if you're an experienced C programmer, this is absolute basic stuff, but there may be people out there that have never used printf. If you're interested in learning more about symbols, buy a book, or read through the MSDN.

glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1); // Print GL Text To The Screen

The last thing to do is increase both the counters by different amounts so the colors pulse and the text moves.

cnt1+=0.051f; // Increase The First Counter

cnt2+=0.005f; // Increase The Second Counter

return TRUE; // Everything Went OK

}

The last thing to do is add KillFont() to the end of KillGLWindow() just like I'm showing below. It's important to add this line. It cleans things up before we exit our program.

if (!UnregisterClass("OpenGL",hInstance)) // Are We Able To Unregister Class

{

MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);

hInstance=NULL; // Set hInstance To NULL

}

KillFont(); // Destroy The Font

}

That's it... Everything you need to know in order to use Bitmap Fonts in your own OpenGL projects. I've searched the net looking for a tutorial similar to this one, and have found nothing. Perhaps my site is the first to cover this topic in easy to understand C code? Anyways. Enjoy the tutorial, and happy coding!

第十四课

图形字体:

在一课我们将教你绘制3D的图形字体,它们可像一般的3D模型一样被变换。

这节课继续上一节课课的内容。在第13课我们学习了如何使用位图字体,这节课,我们将学习如何使用轮廓字体。

创建轮廓字体的方法类似于在第13课中我们创建位图字体的方法。但是,轮廓字体看起来要酷100倍!你可以指定轮廓字体的大小。轮廓字体可以在屏幕中以3D方式运动,而且轮廓字体还可以有一定的厚度!而不是平面的2D字符。使用轮廓字体,你可以将你的计算机中的任何字体转换为OpenGL中的3D字体,加上合适的法线,在有光照的时候,字符就会被很好的照亮了。

一个小注释,这段代码是专门针对Windows写的,它使用了Windows的wgl函数来创建字体,显然,Apple机系统有agl,X系统有glx来支持做同样事情的,不幸的是,我不能保证这些代码也是容易使用的。如果哪位有能在屏幕上显示文字且独立于平台的代码,请告诉我,我将重写一个有关字体的教程。

我们从第一课的典型代码开始,添加上stdio.h头文件以便进行标准输入/输出操作,另外,stdarg.h头文件用来解析文字以及把变量转换为文字。最后加上math.h头文件,这样我们就可以使用SIN和COS函数在屏幕中移动文字了。

另外,我们还要添加2个变量。base将保存我们创建的第一个显示列表的编号。每个字符都需要有自己的显示列表。例如,字符‘A’在显示列表中是65,‘B’是66,‘C’是67,等等。所以,字符‘A’应保存在显示列表中的base + 65这个位置。

我们再添加一个叫做rot的变量。用它配合SIN和COS函数在屏幕上旋转文字。我们同时用它来改变文字的颜色。

GLuint base; // 绘制字体的显示列表的开始位置

GLfloat rot; // 旋转字体

GLYPHMETRICSFLOA T gmf[256]用来保存256个轮廓字体显示列表中对应的每一个列表的位置和方向的信息。我们通过gmf[num]来选择字母。num就是我们想要了解的显示列表的

编号。在稍后的代码中,我将说明如何如何检查每个字符的宽度,以便自动将文字定位在屏幕中心。切记,每个字符的宽度可以不相同。Glyphmetrics会大大简化我们的工作。

GLYPHMETRICSFLOA T gmf[256]; // 记录256个字符的信息

下面这段用来构建真正的字体的代码类似于我们创建位图字体的方法。和13课一样,只是使用wglUseFontOutlines函数替换wglUseFontBitmaps函数。

base = glGenLists(256); // 创建256个显示列表

wglUseFontOutlines( hDC, // 设置当前窗口设备描述表的句柄

0, // 用于创建显示列表字体的第一个字符的ASCII值

255, // 字符数

base, // 第一个显示列表的名称

That's not all however. We then set the deviation level. The closer to 0.0f, the smooth the font will look. After we set the deviation, we get to set the font thickness. This describes how thick the font is on the Z axis. 0.0f will produce a flat 2D looking font and 1.0f will produce a font with some depth.

The parameter WGL_FONT_POLYGONS tells OpenGL to create a solid font using polygons. If we use WGL_FONT_LINES instead, the font will be wireframe (made of lines). It's also important to note that if you use GL_FONT_LINES, normals will not be generated so lighting will not work properly.

The last parameter gmf points to the address buffer for the display list data.

0.0f, // 字体的光滑度,越小越光滑,0.0为最光滑的状态

0.2f, // 在z方向突出的距离

WGL_FONT_POLYGONS, // 使用多边形来生成字符,每个顶点具有独立的法线gmf); //一个接收字形度量数据的数组的地址,每个数组元素用它对应的显示列表字符的数据填充

}

The following code is pretty simple. It deletes the 256 display lists from memory starting at the first list specified by base. I'm not sure if Windows would do this for you, but it's better to be safe than sorry :)

GLvoid KillFont(GLvoid) // 删除显示列表

{

glDeleteLists(base, 256); // 删除256个显示列表

}

下面就是我优异的GL文字程序了。你可以通过调用glPrint(“需要写的文字”)来调用这段代码。文字被存储在字符串text[]中。

部编人教版二年级语文上册第13课《寒号鸟》课堂实录

寒号鸟 着重理解喜鹊看得远,为了将来,早作准备。 1.师:“几阵秋风……”哪一个字告诉我们冬天快要到了? 生:“尽”字。 师:“冬天说到就到……”从哪儿告诉我们天气冷了? 生:(写了寒风)用了两个词,一个模拟声音的“呼呼地”,一个表示动作的“刮”,就不是秋风习习地吹着。 师:“寒风腊月……”同样写风,怎么写,告诉我们天气更冷了? 生:打了一个比喻“像狮子一样狂吼”。 师:现在把这些描写天气的句子读读。刚才提示的词儿要突出一些。 师::同样写天气,用词很讲究,再例如课文中同样写太阳暖和,有哪些词语? 生:就有“太阳暖和”、“大好晴天”、“太阳暖烘烘”、“太阳普照大地”。 师:冬天来了,寒风这么冷;寒冬腊月,北风这么大。这些在冬天还没有来到的时候,喜鹊有没有想到,从哪儿知道? 生:知道,忙着筑巢准备过冬。 师:对,当冬天还没有到,喜鹊就想到冬矢,它想得远,做得早,从哪儿可以看出它这样想得远,很对,这样做很好? 生:从“温暖、熟睡” 师:你们说喜鹊傻不傻?

2.师:真正傻的是谁?现在读他们的对话。 男女声轮读喜鹊和寒号鸟的对话。 指导喜鹊的话。 师:喜鹊热心帮助,语气诚恳。从哪儿看出? 生:“寒号鸟,别睡觉,大好晴天,赶快垒巢。” 师:喜鹊第二次劝寒号鸟,讲出了现在不垒巢的危害,语气加重。怎样说的? 生:“趁天晴,快垒巢,现在懒惰,将来糟糕。” 师:出示: 如果用“今天,。” 如果用“从小,。” 看出,这是一只怎样的喜鹊? 生:从喜鹊说的话,更看出喜鹊看得远。 指导寒号鸟的话。 师:寒号鸟有没有接受劝告?为什么不垒窝?在冬天来到的夜晚,冻得受不了,说第二天就垒窝,到了第二天为什么又不垒窝?谁来做填充。(出示) 只看,不看。 只顾,不顾。 这就可以用一个什么词来概括? 生:“得过且过”(过得去就过去,过一天是一天。) 生:“得过且过”的人往往是目光短浅,鼠目寸光。

第13课香港和澳门的回归教案

2017-2018学年度八年级1、2班历史教案

史料 2澳门问题的由来。 2.“一国两制”的构想 史料1984年,邓小平曾跟英国外交大臣杰弗里·豪说:“解决台湾、香港问题可以有两种方式,一种是非和平方式,一种是和平方式。非和平方式,或者说武力解决问题,总是不好的。怎样能用和平方式解决问题呢?这必须充分照顾到香港和台湾的历史和实际情况。” 问题1.:解决香港、澳门问题的途径和方式有哪两种?各有何影响? 问题2:邓小平从维护祖国和中华民族根本利益出发,创造性地提出了什么构想? 问题3:“和平统一、一国两制”是完成祖国统一大业的基教师:假如你是港澳居民,在经历了多年的殖民统治后,你最大的渴望是什么? 学生:盼望国家富强,渴望回到祖国的怀抱。 教师:新中国成立后,随着祖国的日益强大,如何解决香港、澳门问题,就多次被提到议事日程上来。 ( 拨 回答 一种是非和平方式,就是

本方针, 其含义是什么呢?其中“两制”指的是两种什么制度? “两制”指的是两种社会制度。 二、香港和澳门回归祖国 1.香港回归 史料1 1982年9月24日,邓小平和撒切尔夫人在人民大会堂就解决香港问题举行会谈。 会谈过程中,邓小平强调:主权问题不是一个可以讨论的问题。现在收回香港的时机已经成熟。应明确指出:1997年中国将收回香港不仅是新界,而且还包括香港岛、九龙。如果在中华人民共和国成立48周年即1997年,中国还不把香港收回,任何一个中国领导人和政府都不能向中国人民交代,甚至也不能向世界人民交代。经过3年、22轮的艰苦谈判,终于在1984年签署了《中英联合声明》。 史料2 1984年12月19日,中英两国政府《关于香港问题的联合声明》在北京签署。 史料3 中英香港交接仪式。 2.澳门回归 用武力解决,这既会影响中英、中葡关系的正常发展,又会伤害港澳人民的生命和财产安全。和平方式则可以减少阻力,有利于港澳顺利回归。学生得出结论:和平的方式有利于港澳的正常发展,更符合人民的心愿。回答回答祖国统一的前提下,国家的主体坚持社会主义制度,同时在台湾、香港、澳门保持原有的资本主义制度和生活方式长期不变。

新版中日交流标准日本语·学习攻略 第12课李さんは森さんより若いです

第12課李さんは森さんより若いです ◆语法 (一)格助词「より」 格助词「より」,可接在体言之后,表示比较、对照的基准。 ★カタカナは平仮名より難しいです。 片假名比平假名难。 ★弟は私より背が高いです。 弟弟的个子比我高。 ★日本より中国のほうが広いです。 与日本相比,中国更辽阔。 ★中国は日本より広いです。 中国比日本大。 ?历年真题解析 真题1私の国は日本__大きいです。「1」 1.より 2.まで 3.とは 4.では 真题2けさはきのうの朝__さむいです。「4」 1.でも 2.まで 3.では 4.より 真题3このくつはあのくつ__あるきやすいです。「2」 1.ほう 2.より 3.ほど 4.ように 解析:格助词「より」用于两者进行比较的句子中,表示比较的基准。 (二)副助词「ほど」 副助词「ほど」,可接在体言之后,用于表示否定意义的比较句中,提示比较的基准或程度。★私は王さんほど日本語が上手ではありません。 我的日语不像小王那么好。 ★神戸は大阪ほど賑やかではありません。 神户没有大阪那么热闹。 ★野球ほどおもしろいスポーツはありません。 没有比棒球更有趣的体育活动了。 ★今年の冬は去年ほど寒くありません。 今年冬天不像去年那么冷。 ★昨日より今日のほど暑いです。 今天比昨天热。 ?历年真题解析 真题1このくつはあの黒いくつ__高くないです。「4」 1.だけ 2.しか 3.でも 4.ほど 真题2今年のなつは、去年のなつ__あつくありませんでしたね。「3」

1.でも 2.しか 3.ほど 4.ごろ 真题3今年の試験は去年の試験__むずかしくないと思います。「4」 1.など 2.しか 3.ばかり 4.ほど 真题4妹は、私__走るのが、はやくない。「1」 1.ほど 2.ほう 3.まで 4.みたい 解析:对两个事物进行比较且谓语是否定形式时,用「ほど」提示比较的基准或程度。 ◆句型 (一)两个事物的比较 1.~と~とどちらが~ですか ?构成方式: 体言1と+体言2と+どちらが+形容词/形容动词ですか ?主要用法及用例: 当两个事物进行比较时,可用格助词「と」将两者并列,再用疑问词「どちら」进行提问,口语中有时说成「どっち」。这个问句的回答使用「~より~のほうが~」,「~より」部分经常被省略。 ★日本語と英語とどちらが難しいですか。 日语和英语那个难学? (英語より)日本語のほうが難しいです。 (比起英语)日语难学。 ★リンゴとバナナとどっちが好きですか。 苹果和香蕉更喜欢那个? (バナナより)リンゴのほうが好きです。 (比起香蕉)更喜吃苹果。 どちらも好きです。 那个都喜欢。 ※…と…(と)では,(どちら)が… 这是一个比较选择句型,「と」前可以是体言、也可以是用言终止形。用言在「と」前时,「では」前的「と」不可以省略,意为“…与…相比,(哪一个)更…”。 ★魚と肉(と)では,どちらがお好きですか。 鱼与肉相比,你更喜欢吃什么? ★赤いと白いとでは,どちらがきれいですか。 红色和白色相比,哪一个更漂亮? ?重点整理 本课中出现的例句多为形容词、形容动词作谓语,因此疑问词「どちら」后使用格助词「が」,若是动词作谓语的比较句,其助词则须由动词决定,宾语用「を」,表示方向则用「へ」表示。★おすとしおとどちらを先に入れますか。 醋和盐先放哪个? しおのほうを先に入れます。 先放盐。

新标日课后练习答案

新标日课后练习答案(第一课練習Ⅱ)5.将下面的句子译成日语。 (1)小李是中国人。 李さんは中国人です。 (2) 森先生不是学生。 森さんは学生ではありません。 (3) 小李是JC策划公司的职员。 李さんは JC企画の社員です。 新标日课后练习答案(第二课練習Ⅱ)5.将下面的句子译成日语。 (1)那是谁的伞? あれはだれの傘ですか。 (2)这是日语书。 これは日本語の本です。 (3)森先生的包是哪个? 森さんのかばんはどれですか。 新标日课后练习答案(第三课練習Ⅱ)4.将下面的句子译成日语。 (1)厕所在哪儿? トイレはどこですか。 (2)这里是邮局还是银行? ここは郵便局ですか,銀行ですか。(3)这个多少钱? これはいくらですか。 新标日课后练习答案(第四课練習Ⅱ). 4.将下面的句子译成日语。 (1)桌子上面有(一只)猫 机の上に猫がいます。

(2)小野女士的家在哪里? 小野さんの家はどこにありますか。 (3)房间里没有人。 部屋にだれもいません。 新标日课后练习答案(第五課練習Ⅱ) 4.将下面的句子译成日语。 (1)森先生7点起床。 森さんは7時に起きます。 (2)我昨天没上班。 わたしは昨日働きませんでした。 (3)森先生昨天从9点工作到6点。 森さんは昨日9時から6時まで働きました。 新标日课后练习答案(第六課練習Ⅱ) 5.将下面的句子译成日语。 (1)小野女士和朋友(一块儿)回去。 小野さんは友達と(いっしょに)帰りました。(2)小李上个月从北京来。 李さんは先月北京から来ました。 (3)吉田先生下个月去中国。 吉田さんは来月中国へ行きます。 新标日课后练习答案(第七课練習Ⅱ) 4.将下面的句子译成日语。 (1)小李在图书馆学习。 李さんは図書館で勉強します。 (2)小李每天和咖啡。 李さんは毎日コーヒーを飲みます。 (3)森先生今天早晨什么都没吃。 森さんは今朝何も食べませんでした。

新版标准日本语初级语法上册9-12课(1)

新版标准日本语初级语法上册9~12课 第9课 **************************** 1、名は一类形です ▲四川料理は辛いです。(四川菜很辣) ▲あのスープは冷たいです。(那个汤是凉的) ▲このお茶は熱いです。(这茶很烫) 日语的形容词分两类。其中,一类形容词是以“い”结尾的形容词。做谓语时要在后面加“です”。 2、一类形做谓语时的否定形式 ▲このスープは熱くないです。(这个汤不热) ▲今日は寒くないです。(今天不冷) ▲この本は高くありません。(这本书不贵) 一类形容词做谓语时的否定形式是将词尾的“い”变成“く”再加上“ないです”或“ありません”。“いいです”的否定是“よくないです”或“よくありません” 3、一类形做谓语时的过去形式 ▲旅行は楽しかったです。(旅行很愉快) ▲昨日は寒くなかったです。(昨天不冷) ▲昨日は寒くありませんでした。(昨天不冷) 一类形容词做谓语时的过去形式是将词尾的“い”变成“かった”再加“です”。其过去形式的否定形式则是把词尾“い”变成“くなかったです”或者“くありあませでした”。 ▲おいしいです。(好吃。)[正在吃的时候] ▲おいしかったです。(好吃。)[吃完以后] 描述过去体验过的事物的性质时,日语必须使用过去式。“いいです”的过去形式是“よかったです”,过去否定形式是“よくありませんでした”。 4、一类形+名 ▲広い国(幅员辽阔的国家) ▲青い海(蓝色的大海) ▲おいしい料理(可口的饭菜) ▲白い紙(白纸) 一类形容词可直接修饰名词。形容词和名词之间不能加“の”。“×おいしいの料理りょうり”。 5、“を”→“は” ▲この本は李さんにもらいました。(这本书是从小李那儿得到的)[话题] ▲わたしはコーヒーは飲みません。(我不喝咖啡)[对比] “コーヒーを飲のみます(喝咖啡)”中的“を”前面的名词作话题,或者进行对比时,使用第5课、第6课学过的助词“は”,构成“コーヒーは飲のみます”“コーヒーは飲のみますか”“コーヒーは飲のみません”的形式。这时候原来的“を”必须去掉,不能变成“×をは”的形式。

新版标准日本语 初级 第1课同步测试卷

新版标准日本语初级第1課同步测试卷(限时90分钟) 笔试部分(满分90分) 一、将下列汉字改为平假名。(共20分,每小题2分) 1、学生_____________ 2、中国人_____________ 3、課長_____________ 4、英語_____________ 5、企画_____________ 6、吉田_____________ 7、日本_____________ 8、会社員_____________ 9、教授_____________ 10、森_____________ 二、将下列假名改为汉字。(共20分,每小题2分) 11、しゃいん_____________ 12、ちゅうごく_____________ 13、だいがくせい_____________ 14、てんいん_____________ 15、しゃちょう_____________ 16、とうきょう_____________ 17、しゃしん_____________ 18、がいこく_____________ 19、かいしゃ_____________ 20、けんしゅうせい_____________ 三、从下列①②③中选择正确词语,完成句子。(共20分,每小题2分) 21、わたしは___です。 ①小野②小野さん③学生さん 22、___は社員です。 ①李さん②林③キム 23、あなたは___ですか。 ①張②張新③留学生 24、アメリカ人は___ですか。 ①どこ②だれ③なん 25、キムさんは___ではあリません。 ①留学②学校③社員 26、韓国は___ですか。 ①だれ②どこ③なん 27、A:森さんは課長ですか。 B:いいえ、課長___。 ①です②ですか③ではありません 28、A:あなたはタイ人ですか。 B:___タイ人ではありません。 ①いや②いいえ③はい 29、A:あなたはアメリカ人ですか。 B:___、アメリカ人です。 ①はい②いいえ③いや 30、A:キムさんは会社員ではありませんか。 B:はい、会社員___。 ①ではありません②です③ではあります

部编版二年级语文下册 课文13 寒号鸟

课文13 寒号鸟 1.认识15个生字;会写8个生字;掌握多音字“号、当”; 2.理解“晴朗、劝告、哆嗦、冰窖、哀号、得过且过”等词语; 3.理解课文内容,懂得“现在懒惰,将来难过”“得过且过”是没有好结果的和只有通过 辛勤的劳动才能过上美好生活的道理。 多音字 号(háo)号叫辨表示“大声呼喊或大声哭”时,读háo,如,号叫、哭号。其余(hào)口号析情况都读hào。 缝(fèng)门缝儿字衣服破了要缝(féng)补,伤口很深要缝(féng)合。 (féng)缝合歌石头缝(fèng)隙是石缝(fèng),见缝(fèng)插针会利用。当(dàng)上当字恰当(dàng)来选择,当(dàng)铺门前过。 (dāng)当初歌当(dāng)地土特产,当(dāng)然是好货。 近义词 晴朗——晴好赶快——连忙准备——预备 呼唤——召唤暖和——温暖劝告——劝说寒冬腊月——数九寒天 反义词 懒惰——勤劳难过——高兴晴朗——阴沉 温暖——寒冷得过且过——一丝不苟 词语搭配 温暖的窝里温暖的天气温暖的春天温暖的教室温暖的怀抱温暖的人间 呼呼地刮着呼呼地睡着呼呼地吹着呼呼地冒气呼呼地喘气 词语解释 晴朗:没有云雾,日光充足。词语搭配:晴朗的天空、晴朗的秋天。 劝说:拿道理说服人,使人改正错误或接受意见。例句:见到不文明的行为,我们应当进行劝告。 温暖:暖和。 得过且过:且,暂且。原指过一天算一天,不作长远打算。现在也指工作马虎应付,不负责任。出处:宋·陆游《杂咏》诗之二:“得过一日且一日,安知今吾非故吾?”例句:得过且过的人将一无所成。 寒冬腊月:指农历十二月天气很冷的时候。泛指寒冷的冬季。例句:寒冬腊月,冰雪封冻了大地。 哀号:悲哀地号哭。例句:受伤的小鸟发出一声声绝望的哀号。

部编版历史七年级下册学案:第13课 香港和澳门回归祖国【最新整理】

第13课香港和澳门回归祖国 【学习目标】 1.知道香港和澳门问题的由来。 2.了解“一国两制”提出的背景含义及深远影响。 3.掌握香港、澳门回归祖国的过程和意义。 【学习重点】香港、澳门回归祖国及其历史意义 【学习难点】“一国两制”构想的含义、其影响 【学习过程】 一、自主预习 1.进入改革开放新时期后,从维护祖国和中华民族的根本利益出发,创造性地提出了 “”的伟大构想。 2.在祖国统一的前提下,国家的主体坚持制度,同时在台湾、香港和澳门保持原有 的制度和生活方式长期不变。 3.1984年,中英两国签署联合声明,宣布中华人民共和国将于年7月1日港恢复行 使主权。 4.1987年,两国签署联合声明,宣布中华人民共和国将于年12月20日对澳复 行使主权。 5.标志着中国人民洗雪了百年国耻,在完成大业的道路上迈出了重要的一步。 二、合作探究 1.怎样理解“一国两制”的含义? 2.说说香港和澳门能够顺利回归祖国的原因。对此你得到了什么启示? 三、随堂演练 1.“一国两制”构想首先被运用于解决什么问题( ) A.台湾 B.香港 C.澳门 D.威海卫

2.按照“一国两制”的原则,中华人民共和国对香港、澳门恢复行使主权的时间分别是() A.1984年、1987年 B.1997年、1998年 C.1996年、1997年 D.1997年、1999年 3.2017年是香港回归祖国20周年。有人说:“收回香港,是邓小平的天才创造。”这里的“天 才创造”是指() A.市场经济 B.家庭联产责任制 C.“一国两制”方针 D.经济特区 4.我国之所以能够对香港恢复行使主权,其中最重要的因素是() A.新中国已成为独立的主权国家 B.国家统一是中华民族的共同愿望 C.“一国两制”构想被有关各方接受 D.改革开放使综合国力大大增强 5.香港回归祖国多年来,保持了经济社会的繁荣、稳定和发展。香港的回归() ①使祖国实现了完全统一②体现了我国综合国力的提高③证明“一国两制”方针是正确的④使我国进入了发达国家的行列 A.①④ B.②④ C.②③ D.①③ 6.中国政府正式恢复对澳门行使主权的时间是() A.1997年7月1日 B.1997年12月20日 C.1999年7月1日 D.1999年12月20日 7.香港、澳门回归祖国有什么历史意义? 四、课后反思 【参考答案】 一、自主预习 1.邓小平一国两制 2.社会主义资本主义 3.1997 4.中葡 1999 5.祖国统一 二、合作探究 1.“一国两制”就是在祖国统一的前提下,国家的主体坚持社会主义制度,同时在台湾、 香港、澳门保持原有的资本主义制度和生活方式长期不变。

部编版小学二年级上册语文第13课《寒号鸟》课文原文及教案

部编版小学二年级上册语文第13课《寒号鸟》课文原文及教案 【导语】《寒号鸟》是一篇运用对比手法写的童话。叙述了喜鹊和寒号鸟对待垒巢的不同态度和不同结果,说明了好逸恶劳。得过且过是没有好结果的。无忧考网准备了以下内容,希望对你有帮助! 【篇一】部编版小学二年级上册语文第13课《寒号鸟》课文原文 山脚下有一堵石崖,崖上有一道缝,寒号鸟就把这道缝当作自己的窝。石崖前面有一条河,河边有一棵大杨树,杨树上住着喜鹊。塞号鸟和喜鹊面对面住着,成了邻居。 几阵秋风,树叶落尽,冬天快要到了。 有一天,天气晴朗。喜鹊一早飞出去,东寻西找,衔回来一些枯草,就忙着做窝,准备过冬。寒号鸟却整天出去玩,累了就回来睡觉。喜鹊说:“塞号鸟,别睡了,大好晴天,赶快做窝。” 塞号鸟不听劝告,躺在崖缝里对喜鹊说:“傻喜鹊,不要吵,天气暖和,正好睡觉。”

冬天说到就到,寒风呼呼地刮着。喜鹊住在温暖的窝里。塞号鸟在崖缝里冻得直打哆嗦,不停地叫着:“哆啰啰,哆啰啰,寒风冻死我,明天就做窝。” 第二天清早,风停了,太阳暖暖的,好像又是春天了。喜鹊来到崖缝前劝寒号鸟:“趁天晴,快做窝,现在懒惰,将来难过。” 寒号鸟还是不听劝告,伸伸懒腰,答道:“傻喜鹊,别啰嗦,天气暖和,得过且过。” 寒冬腊月,大雪纷飞。北风像狮子一样狂吼,崖缝里冷得像冰窖。寒号鸟重复着哀号:“哆啰啰,哆啰啰,寒风冻死我,明天就做窝。” 天亮了,太阳出来了,喜鹊在枝头呼唤寒号鸟。可是,寒号鸟已经在夜里冻死了。 ____________________ 本文根据民间传说改编。 【篇二】部编版小学二年级上册语文第13课《寒号鸟》教案 教学目标 1.学会本课13个生字,读准多音字“号”,理解13个新词。 2.能按事情发展顺序,把几句话整理成一段通顺的话。 3.能分角色朗读课文。

【人教版八年级历史下册教案】第13课 香港和澳门回归祖国

第13课香港和澳门回归祖国 1教学分析 【教学目标】 【重点难点】 教学重点:香港、澳门的回归及其历史意义 教学难点:“一国两制”构想的含义、影响 2教学过程 一、导入新课 播放歌曲——《七子之歌—澳门》 师:这首歌的名字叫什么?歌词作者是谁? 生:《七子之歌—澳门》。闻一多。 师:“七子”指的是哪些地区?它们现在情况如何? 教师总结:“七子”是澳门、香港、台湾、威海卫、广州湾、九龙、旅顺和大连。到目前为止,除了台湾外,都已经回到了祖国的怀抱。今天我们就来看看香港和澳门是如何回归祖国的。 二、新课讲授 目标导学一:“一国两制”的构想 1.史料展示: 解决台湾、香港问题可以有两种方式:一种是非和平的方式,一种是和平的方式。非和平的方式,或者说武力解决问题,总是不好的。怎样用和平方式解决问题呢?这必须充分照顾到香港和台湾的历史和实际情况。 ——1984年邓小平会见英国外交大臣杰弗里·豪的对话 2.教师提问:邓小平所说的和平方式是什么? 提示:“一国两制”。 3.教师强调:“和平统一、一国两制”是完成祖国统一大业的基本方针。什么是“一国两制”? 提示:“一国两制”就是在祖国统一的前提下,国家的主体坚持社会主义制度,同时在台湾、香港、

澳门保持原有的资本主义制度和生活方式长期不变。 4.教师过渡:“一国两制”是一种非凡的构想。但我们是社会主义国家,实现统一为什么要采用“一国两制”的方式? 提示:香港和澳门长期被英国和葡萄牙控制,实行资本主义制度,经济得到了很大的发展。当地人民在思想文化、价值观念等方面与大陆有不少差异,强行在香港和澳门实行社会主义制度,会影响香港和澳门的顺利回归。 5.教师引导:指导学生分组讨论“一国两制”构想的益处。 提示:第一,“一国两制”尊重了港、澳、台的历史和现实,有利于保证它们的繁荣与稳定,也有利于社会主义经济的发展。 第二,坚持一个中国的立场,维护了国家的主权和统一。 第三,在国家的主体坚持社会主义制度,同时在港、澳、台地区保持原有的资本主义制度和生活方式长期不变,既维护了社会主义制度的主导地位,又维护了国家的社会主义性质。 第四,体现了中国特色社会主义制度,对港、澳、台回归祖国起了促进作用。总之,“一国两制”构想的提出,为香港和澳门回归祖国开辟了途径。 目标导学二:香港和澳门回归祖国 (一)港澳回归的基本情况 1.图片展示:多媒体展示相关图片 2.学生自主学习:学生分组讨论驻军对主权拥有的意义。 3.提出问题:香港在何时回到祖国的怀抱?澳门呢? 提示:香港在1997年7月1日回归祖国。澳门在1999年12月20日回归祖国。 4.学生自主学习:阅读教材并回顾历史,以时间为线索理清香港、澳门问题的由来和回归祖国的主要经过。 提示:以香港为例。 香港问题的由来:英国通过1842年《南京条约》割占香港岛;通过1860年《北京条约》割占九龙司地方一区;通过1898年《中英展拓香港界址专条》租借新界,租期99年,1997年6月30日到期。 香港回归祖国的主要经过:1982年,英国首相撒切尔夫人访华,中国正式提出以“一国两制”方案收回香港;1984年12月,中英两国正式签署声明,宣布中华人民共和国政府将于1997年7月1日对香港恢

标准日本语初级下课后答案25-30

【練習】新標日初下第二十五課 第二十五課 練習I 1. これは課長に見せる手紙です。 これは図書館で借った雑誌です。 これは一日に三回飲む薬です。 これは甘くておいしい飲み物です。 これは日本にはない果物です。 これはきれいで優しかった母の写真です。 これは森さんがカラオケでよく歌う中国の歌です。 これはわたしが生まれた家の写真 これは陳さんがまだ食べたことがない日本料理です。これは李さんが明日の会議で使う資料です。 明日会社へ来ない人は森さんです。 山でけがをした人は森さんです。 まだ結婚していない人は森さんです。 周さんを知らなかった人は森さんです。 2. 手紙を書いている人はだれですか。 お茶を飲んでいる人はだれですか。 タバコを吸っている人はだれですか。 新聞を読んでいる人はだれですか。 電話をかけている人はだれですか。 3. 李さんが書いたレポートを読みました。 日本で撮ったビデオを見ませんか。 明日泊まるホテルの電話番号を教えてください 父にもらった時計をなくしました。 デザインが新しい靴を買いたいです。 自然が豊かな国が少なくなりました。 あなたの子供が好きな料理は何ですか。 仕事がおもしろくて、給料が高い会社に入りたいです。

4. 唐:もしもし、李さんですか。唐です。 李:あっ、唐さん、こんにちは。 唐:今、忙しいですか。 李:いいえ、別に。今、日本から来たメールをチェックしていますが。 唐:そうですか。じゃあ、一緒に食事に行きませんか。 李:ええ、いいですよ。 田中:もしもし、李さんですか。田中です。 李:あっ、田中さん、こんにちは。 田中:今、忙しいですか。 李:いいえ、別に。今、先月の旅行で撮った写真を見ていますが。 田中:そうですか。じゃあ、一緒に美術館に行きませんか。 李:ええ、いいですよ。 森:もしもし、李さんですか。森です。 李:あっ、森さん、こんにちは。 森:今、忙しいですか。 李:いいえ、別に。今、日本の友達に出す手紙を書いていますが。 森:そうですか。じゃあ、一緒に公園に行きませんか。 李:ええ、いいですよ。 甲:あの人は誰ですか。 乙:どの人ですか。 甲:あそこでコピーを取っている人です。 乙:ああ、あの人ですか。話したことはあるんですが、名前はちょっと…。 甲:あの人は誰ですか。 乙:どの人ですか。 甲:今、李さんとお茶を飲んでいる人です。 乙:ああ、あの人ですか。顔を見たことはあるんですが、名前はちょっと…。 甲:あの人は誰ですか。 乙:どの人ですか。 甲:さっき入り口で会いている人です。 乙:ああ、あの人ですか。一度会ったことはあるんですが、名前はちょっと…。 甲:あの人は誰ですか。 乙:どの人ですか。 甲:あそこで電話をかけている人です。

部编版二年级语文上册第13课《寒号鸟》优秀教案

13 寒号鸟 一、教学目标 1.会认本课17个生字,读准多音字“号、当”,会写本课8个生字。 2.能按事情发展顺序,把几句话整理成一段通顺的话。 3.能分角色朗读课文。 4.懂得懒惰。得过且过是没有好结果的,美好的生活只有。通过辛勤的劳动才能得到。 二、教学重点与难点 教学重点:理清事情发展顺序,分角色朗读课文。 教学难点:准确领会寓意。 三、教学准备 1.寒号鸟的挂图或投影片。 2.课文录音。 四、教学时间:2课时 第1课时 (一)教学目标 1.学会生字、新词,读准多音字“号”。 2.初读课文,理清文章脉络,训练按时间顺序连句成段。 3.学懂课文第1自然段。 (二)教学过程 1.揭题。 (1)齐读课题“寒号鸟”,读准多音字“号”。 (2)你知道寒号鸟是怎样一种动物吗,(对课外知识丰富的的同学及时鼓励。教师出示挂图或投影片简介寒号鸟。) 2.布置自学。 这是一篇童话故事,我们学习后从中能明白什么道理,请同学们完成下列要求。 (1)自由读课文,划出生字新词,用“·”点出你认为容易写错的字,用“?”注出不理解的词或句。

(2)读通课文,用“……”划出表示季节变化的句子。 (3)填空:这篇童话通过()和()作对比,写出了喜鹊是()的,寒号鸟是()的。 3.检查自学情况。 (1)听录音范读课文。(听后自评并纠正) (2)指名读一读划出的词语。(互相交流评点) (3)说说哪些字容易写错。(教师点拨:“懒”字中间是“束”字。) (4)指名填空并齐读。 4.练习按时间顺序组句成段。 (1)指名读读用“……”划出的表示时间的句子。 (2)将学生读出的句子按顺序出现。 (3)学生独立默读体会,哪些句子跟季节变化有关,哪些句子不能表示季节变化?(删去跟季节变化无关的句子) (4)这些跟季节有关的句子应该怎样排列?为什么? 5.理清文章脉络。 (1)默读全文。 (2)说一说:课文第()自然段到第()自然段是写“冬天快要到”的事;……是写,“寒冬腊月”的事。 6.学习第1自然段。 (1)自由读,读懂三句话分别告诉我们什么,哪句话的意思是最主要的。(指导看插图) (2)体会寒号鸟的懒惰。(学生理论,互评) (3)齐读第1自然段。 第2课时 教学目标: 1.结合讲读裸文,理解“哀号”、“得过且过”、“哆嗦”等词语的意思。 2.巩固抓重点词理解句子的方法,培养学生抓重点词提出问题、分析问题的能力。 3.懂得懒惰、得过且过是没有好结果的,幸福的生活只有通过辛勤劳动才

第13课香港和澳门的回归 教学设计

第13课香港和澳门的回归教学设计 学习目标: 1.知识与能力:了解香港和澳门问题的由来;理解“一国两制”的提出、含义及意义;掌握香港和澳门回归的时间、原因及意义。 2、过程与方法:通过分析“一国两制”的伟大构想和香港澳门回归的原因,培养初步的历史归纳能力和综合分析能力。 3、情感态度和价值观:增强爱国情感和民族自尊心、自信心。 新课导入: 播放《回首沧桑骨肉分》即香港、澳门问题的由来 (1)香港被侵占过程。 1842年8月,英国强迫清政府签订中英《南京条约》,正式割让香港岛。1860年10月,英国强迫清政府签订中英《北京条约》,割让九龙。 1898年6月,英国强迫清政府签订《展拓香港界址专条》,强租新界、附近大小岛屿235个以及大鹏湾、深圳湾水域,为期99年。 (2)澳门被侵占过程。 1535年,葡人在澳门停靠船舶,进行贸易。 1557年,葡人正式进入澳门,开始在澳门长期居留。 1849年,葡萄牙人推行扩张政策,经过30多年的蚕食,占领了关闸以南的澳门半岛。 1851年,葡人占领氹仔岛。1864年,葡人占领路环岛。 (3)提出问题:香港、澳门问题的产生说明了什么? 那么港澳是如何回归的,今天让我们一起来学习《香港和澳门的回归》一课。自主预习(结合课标要求、课标解读和导学案,自主学习,梳理知识,展示交流) 一、“一国两制”的构想和港澳回归 1.提出时间:改革开放新时期 2.提出者:邓小平 3.目的:为维护祖国和中华民族根本利益。 4.含义:在的前提下,国家的主体坚持制度,同时在台湾、香港、澳门保持原有的制度长期不变。 5.作用:①为实现祖国统一大业指明了前景,赢得海内外人士的好评。

13《寒号鸟》

寒号鸟 教学目标: 1、认识17个生字,会写8个生字;掌握多音字“号、当”;理解“晴朗、劝告、哆嗦、冰窖、哀号、得过且过”等词语。 2、正确、流利地朗读课文,分角色朗读课文。 3、理解课文内容,懂得“现在懒惰,将来难过”“得过且过”是没有好结果的和只有通过辛勤劳动才能过上美好生活的道理。 教学重点: 1、认识17个生字,会写8个生字;掌握多音字“号、当”;理解“晴朗、劝告、哆嗦、冰窖、哀号、得过且过”等词语。 2、正确、流利地朗读课文,分角色朗读课文。 教学难点: 理解课文内容,懂得“现在懒惰,将来难过”“得过且过”是没有好结果的和只有通过辛勤劳动才能过上美好生活的道理。 教学时间: 2课时。 教学过程: 第一课时 一、揭示课题,导入课文 1、上一节课,同学们认识了坐井观天的——青蛙,今天,我们又要来认识一位非常有名的童话明星——寒号鸟。 2、介绍寒号鸟。 寒号鸟:实际上是鼯鼠。民间传说中,说它在严寒的冬天不断地号叫,发出“哆啰啰、哆啰啰”的声音,最后被冻死了,所以人们叫它寒号鸟。鼯鼠,哺乳类,外形像松鼠,但比松鼠略大。它的前后肢均有钩爪,前后肢之间有宽大的皮膜相连,尾长,背部褐色或灰褐色,腹部毛色较浅。生活在长有松柏的崖石陡壁上的石洞或岩缝中,以松柏树叶为食。分布在河北、山西、陕西、甘肃、四川、云南等地。中华鼯鼠,主要生活在柏树林山地中。

3、小结:今天我们就从课本中去了解一下《寒号鸟》(板书课题,齐读课题),注意“号”的读音。 二、初读课文,学习生字 1、出示自读要求。 (1)自由朗读课文,借助拼音,读准字音,读通句子。 (2)画出生字、词语,多读几遍。 2、小组学习。 (1)组长检查生字读音。 (2)交流识字方法。 (3)接读课文。 3、检查小组学习情况。 (1)课件出示生字、词语。 寒号鸟一堵缝隙当作喜鹊晴朗 头衔枯草劝告趁着将要 得过且过腊月狂风吼叫哀号 ①指名开火车朗读,师生正音。 ②齐读。 ③去掉拼音朗读。 4、重点讲解多音字“当、号、缝”的注音。给词语选择正确的读音。 5、出示形近字,进行双胞胎找不同,然后组词。 三、情景朗读 1、教师范读,提醒学生认真听,注意生字的读音。 2、指名分自然段朗读,教师相机指导,要注意字音准确、语言顺畅。 3、分段指导朗读。 2、初步感知课文大意。说说读了课文之后,知道了什么。(引导学生自由说,帮助学生提取文本信息,能用自己的话简要说说课文写了一件什么事。) 四、识记生字,指导书写 1、引导学生运用学过的方法自主认字,说说哪些字是自己已经认识的,是从什么渠道或通过什么方法认识的(出示会写的字的谜语,让学生猜)。

第13课-香港和澳门的回归公开课教案

第13课香港和澳门的回归 实验中学石国红 教学目标: 1、知识与能力 了解“一国两制”提出的背景、含义及深远影响;知道香港、澳门问题的由来;简述香港、澳门回归的过程和意义;了解香港和澳门区旗、区徽及含义。 2、过程与方法 搜集香港、澳门的历史、地理、回归历程、回归后的繁荣发展等资料,学会从中获取有效的信息;通过诗歌朗诵、歌曲演唱、编演历史剧、观看香港、澳门回归录像等资料,感受香港、澳门艰难的回归历程,加深对港、澳回归意义的理解以及祖国统一是历史发展必然的感性认识。 3、情感态度与价值观 邓小平创造性地提出“一国两制“的伟大构想,为香港和澳门的回归做出了巨大的贡献;香港、澳门回归祖国,说明中国的国力日益强大,中国在国际事务中的地位和作用日益加强。 教学重难点: 教学重点:香港、澳门回归及其历史意义——通过研究小组的多项活动展示,加深对港、澳回归的了解和掌握;通过抒发港澳被侵占和回归的不同感受,加深对回归意义的理解。 教学难点:“一国两制”构想的含义及其影响——通过阅读课文和相关文献资料,进行讨论,理解含义及影响。 教学过程: 【导入新课】 播放《东方之珠》歌曲, 香港、澳门是祖国两颗璀璨的明珠。但百年前的中国,由于落后,不断遭到外国侵略者的欺凌,使得香港、澳门这两颗璀璨的明珠就这样被列强从祖国母亲的怀抱中夺走了。而今这两颗明珠历经艰辛终于回到祖国母亲的怀抱。下面,就让我们踏着历史的足迹,共同回顾一下香港、澳门是如何回归到祖国母亲怀抱的。【新课探究】 一、屈辱的过往 过渡:有过失去才会叫回归,那历史上港澳问题是怎样由来的呢? (展示《沧桑回顾》课件,介绍港澳被侵占历程) 过渡:每一个中国人,都忘不了这个耻辱,每一个中国人都希望香港、澳门早日回归。闻一多先生所作的《七子之歌》代表了广大人民的心声。现在我们来看其中的两首。 课件显示《七子之歌.香港》(请一学生带领朗读) 课件显示《七子之歌.澳门》(学生聆听歌曲) 过渡:闻一多先生所作的《七子之歌》,他用了拟人的手法将七处失地比作远离祖国母亲的七个孩子,用小孩子的口吻哭诉他们被迫离开母亲,受尽侵凌,渴望

新标日初级基本课文课文重点四句话

第1课李(り)さんは中国人(ちゅうごくじん)です 基本课文 李(り)さんは中国人(ちゅうごくじん)です。 森(もり)さんは学生(がくせい)ではありません。 林(はやし)さんは日本人(にほんじん)ですか。 李(り)さんはJC(ジェーシー)企画(きかく)の社員(しゃいん)です。 <基本课文译文> 1.小李是中国人。 2.森先生不是学生。 3.林先生是日本人吗? 4.小李是JC策划公司的职员。 第2课これは本(ほん)です 基本课文 これは本(ほん)です。 それは何(なん)ですか。 あれはだれの傘(かさ)ですか。 このカメラはスミスさんのです。 <基本课文译文> 1.这是书。

2.那是什么? 3.那是谁的伞? 4.这个照相机是史密斯先生的。 第3课ここはデパートです 基本课文 ここはデパートです。 食堂(しょくどう)はデパートの七階(ななかい)です。 あそこもJC(ジェーシー)企画(きかく)のビルです。 かばん売(う)り場(ば)は一階(いっかい)ですか,二階(にかい)ですか。 <基本课文译文> 1.这里是百货商店。 2.食堂在百货商店的7层。 3.那里也是JC策划公司的大楼。 4.卖包的柜台在1层还是2层? 第4课部屋(へや)に机(つくえ)といすがあります 基本课文 部屋(へや)に机(つくえ)といすがあります。 机(つくえ)の上(うえ)に猫(ねこ)がいます。 売店(ばいてん)は駅(えき)の外(そょ)にあります。

吉田(よしだ)さんは庭(にわ)にいます。 <基本课文译文> 1.房间里有桌子和椅子。 2.桌子上面有(一只)猫。 3.小卖部在车站的外边。 4.吉田先生在院子里。 第5课森(もり)さんは七時(しちじ)に起(お)きます 基本课文 今(いま)四時(よじ)です。 森(もり)さんは七時(しちじ)に起(お)きます。 森(もり)さんは先週(せんしゅう)休(やす)みました。私(わたし)は昨日(きのう)働(はたら)きませんでした。 <基本课文译文> 1.现在4点。 2.森先生7点起床。 3.森先生上周休息。 4.我昨天没上班。

部编版二年级语文上册第13课《寒号鸟》原文及教案

部编版二年级语文上册第13课《寒号鸟》原文及教案 【原文】 山脚下有一堵石崖,崖上有一道缝,寒号鸟就把这道缝当作自己的窝。石崖前面有一条河,河边有一棵大杨树,杨树上住着喜鹊。塞号鸟和喜鹊面对面住着,成了邻居。 几阵秋风,树叶落尽,冬天快要到了。 有一天,天气晴朗。喜鹊一早飞出去,东寻西找,衔回来一些枯草,就忙着做窝,准备过冬。寒号鸟却整天出去玩,累了就回来睡觉。喜鹊说:“塞号鸟,别睡了,大好晴天,赶快做窝。” 塞号鸟不听劝告,躺在崖缝里对喜鹊说:“傻喜鹊,不要吵,天气暖和,正好睡觉。” 冬天说到就到,寒风呼呼地刮着。喜鹊住在温暖的窝里。塞号鸟在崖缝里冻得直打哆嗦,不停地叫着:“哆啰啰,哆啰啰,寒风冻死我,明天就做窝。” 第二天清早,风停了,太阳暖暖的,好像又是春天了。喜鹊来到崖缝前劝寒号鸟:“趁天晴,快做窝,现在懒惰,将来难过。” 寒号鸟还是不听劝告,伸伸懒腰,答道:“傻喜鹊,别啰嗦,天气暖和,得过且过。” 寒冬腊月,大雪纷飞。北风像狮子一样狂吼,崖缝里冷得像冰窖。寒号鸟重复着哀号:“哆啰啰,哆啰啰,寒风冻死我,明天就做窝。” 天亮了,太阳出来了,喜鹊在枝头呼唤寒号鸟。可是,寒号鸟已经在夜里冻死了。 ____________________ 本文根据民间传说改编。 【教案】 教学目标 1.学会本课13个生字,读准多音字“号”,理解13个新词。 2.能按事情发展顺序,把几句话整理成一段通顺的话。 3.能分角色朗读课文。

4.懂得懒惰。得过且过是没有好结果的,美好的生活只有。通过辛勤的劳动才能得到。 教学重点与难点 教学重点:理清事情发展顺序,分角色朗读课文。 教学难点:准确领会寓意。 教学准备 1.寒号鸟的挂图或投影片。 2.课文录音。 教学时间:2课时 第1课时 教学目标 1.学会生字、新词,读准多音字“号”。 2.初读课文,理清文章脉络,训练按时间顺序连句成段。 3.学懂课文第1自然段。 教学过程 一、揭题。 (1)齐读课题“寒号鸟”,读准多音字“号”。 (2)你知道寒号乌是怎样一种动物吗,(对课外知识丰富的的同学及时鼓励。教师出示挂图或投影片简介寒号鸟。) 二、布置自学。 这是一篇童话故事,我们学习后从中能明白什么道理,请同学们完成下列要求。 (1)自由读课文,划出生字新词,用“·”点出你认为容易写锗的字,用“?”注出不理解的词或句。 (2)读通课文,用“……”划出表示季节变化的句子。 (3)填空:这篇童话通过()和()作对比,写出了喜鹊是()的,寒号鸟是()的。 三、检查自学情况。 (1)听录音范读课文。(听后自评并纠正)

新版标准日本语(第12课)电子档

第12課李さんは森さんより若いです 基本课文 1、李さんは森さんより若いです。 2、日本より中国のほうが広いです。 3、神戸は大阪ほどにぎやかではありません。 4、スポーツの中でサッカーがいちばんおもしろいです。 A:北京は東京より寒いですか。 ええ、冬の北京は東京よりずっと寒いです。 B:日本語と英語とどちらが難しいですか。 日本語のほうが難しいです。 C:森さんはテニスが上手ですね。 いいえ、長島さんほど上手ではありません。 D:季節の中でいつがいちばん好きですか。 私は春がいちばん好きです。

语法解释 1、~は~より~です。 李さんは森さんより若いです。 中国は日本より広いです。 上海は北京よりにぎやかですか。 中国は日本よりずっと広いです。 2、~より~ほうが~です。 日本より中国のほうが広いです。 北京より東京のほうが暖かいです。 大阪より東京のほうがにぎやかですか。 3、~は~ほど~くないです/ではありません。 東京の冬は北京の冬ほど寒くないです。 神戸は大阪ほどにぎやかではありません私の部屋は王さんの部屋ほど綺麗ではありません。 4、~の中で~がいちばん~です スポーツの中でサッカーがいちばんおもしろいです。 日本料理の中で寿司がいちばんおいしいです。 日本でいちばん高い山は富士山です。 一年でいちばん寒い月は二月です。

5、~と~とどちらが~ですか。 どちらーどっち 日本語と英語とどちらが難しいですか。 -日本語のほうが難しいです。 コーヒーと紅茶とどっちが好きですか。 -紅茶のほうが好きです。 -どちらも好きです。 6、どの~/いつ/どれ/だれ/何がいちばん~ですか。 この中でどの料理がいちばんおいしいですか。 -この料理がいちばんおいしいです。 季節の中でいつがいちばん好きです。 -私は春がいちばん好きです。 リンゴとナシとバナナの中でどれがいちばん好きです。 果物の中で何がいちばん好きですか。

新版标准日本语初级上册 第12课-推荐下载

第十二課 李さんは森さんより若いです生词表 きせつ(季節)〔名〕季节 ふゆ(冬)〔名〕冬天,冬季 はる(春)〔名〕春天,春季 にほんりょうり(日本料理)〔名〕日式饭菜 すし(寿司)〔名〕寿司 ナシ〔名〕梨 バナナ〔名〕香蕉 ミカン〔名〕橘子 しょうちゅう(焼酎)〔名〕烧酒 にほんしゅ(日本酒)〔名〕日本酒 こうちゃ(紅茶)〔名〕红茶 ウーロンちゃ(~茶)〔名〕乌龙茶 ジャスミンちゃ(~茶)〔名〕茉莉花茶 りょくちゃ(緑茶)〔名〕绿茶 ジュース〔名〕果汁 にんき(人気)〔名〕声望,受欢迎 せき(席)〔名〕座位,席位 クラス〔名〕班级 しゅるい(種類)〔名〕种类 せ(背)〔名〕个子 あに(兄)〔名〕哥哥,兄长

さいきん(最近)〔名〕最近,近来 ふる(降る)〔动1〕下(雨,雪),降(雨,雪) わかい(若い)〔形1〕年轻 あたたかい(暖かい)〔形1〕暖和,温暖 すずしい(涼しい)〔形1〕凉爽 はやい(速い)〔形1〕快 はやい(早い) 〔形1〕早 だいすき(大好き)〔形2〕非常喜欢 いちばん(一番)〔副〕最,第一 ずっと〔副〕~得多 やはり∕やっぱり〔副〕仍然,还是 エベレスト?チョモランマ〔专〕珠穆朗玛峰 _____________________________________にんきがあります(人気があります)受欢迎 ~ねんかん(年間) 语法 1. 比較級 ①AはBより形容詞です。“A比B~” ○李さんは森さんより若いです。 ○中国は日本より広いです。 ○上海は北京よりにぎやかですか。 ○中国は日本よりずっと広いです。

②AよりBのほうが形容詞です。“比起A,B更加~” ○日本より中国のほうが広いです。 ○北京より東京のほうが暖かいです。 ○大阪より東京のほうがにぎやかですか。  ③AはBほど形容詞否定形式。“A没有B~” (一类形容词~くないです 一类形容词~ではありません) ○東京の冬は北京の冬ほど寒くないです。 ○神戸は大阪ほどにぎやかではありません。 ○わたしの部屋は王さんの部屋ほどきれいではありません。  ④疑問句和回答 ――AとBとどちらが形容詞ですか。“A和B,哪个更~?” ――A/Bのほうが形容詞です。“A/B更加~” どちらも形容詞肯定形式です。“两个都~” どちらも形容詞否定形式です。“两个都不~” ○――日本語と英語とどちらが難しいですか。 ――日本語のほうが難しいです。 ○――コーヒーと紅茶とどっちが好きですか。 ――紅茶のほうがすきです。 どちらも好きです。 2.最高級  ①名詞の中でAが一番形容詞です。“在~中,A最~” 名詞:总的范畴,当表示时间、场所时,「の中」可以省略

相关主题
文本预览
相关文档 最新文档